成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

http緩存規(guī)則

wupengyu / 3248人閱讀

摘要:原始服務(wù)器的內(nèi)容可能會發(fā)生變化,緩存要不時(shí)對其進(jìn)行檢測,被稱為再驗(yàn)證。的確切行為取決于特定的瀏覽器文檔以及攔截緩存的配置。中正常重新加載會強(qiáng)制對緩存的文檔副本進(jìn)行再驗(yàn)證,硬性重新加載則直接跳過緩存從原始服務(wù)器請求文檔

web緩存可以自動保存常見文檔副本,當(dāng)web請求抵達(dá)緩存時(shí),如果本地有已緩存的副本,就可以從本地存儲設(shè)備而不是原始服務(wù)器中提取這個文檔。使用緩存可以減少冗余的數(shù)據(jù)傳輸、緩解網(wǎng)絡(luò)瓶頸問題、降低對原始服務(wù)器的要求和降低距離時(shí)延。

可以用已有的副本為某些到達(dá)緩存的請求提供服務(wù),被稱為緩存命中(cache hit),若請求沒有副本可用,被轉(zhuǎn)發(fā)給原始服務(wù)器,被稱為緩存未命中(cache miss)。原始服務(wù)器的內(nèi)容可能會發(fā)生變化,緩存要不時(shí)對其進(jìn)行檢測,被稱為http再驗(yàn)證(revalidation)。

對緩存的副本進(jìn)行再驗(yàn)證時(shí),會向原始服務(wù)器發(fā)送一個小的再驗(yàn)證請求,如果內(nèi)容沒有變化,服務(wù)器會以一個小的304 Not Modified進(jìn)行響應(yīng),副本依然有效,被再次標(biāo)識為暫時(shí)新鮮的,并將副本提供給客戶端,這被稱為再驗(yàn)證命中或緩慢命中,這種方式比單純的緩存命中要慢。

緩存處理步驟

對一條http GET報(bào)文的基本緩存處理包括7個步驟:
1、接收
緩存從網(wǎng)絡(luò)中讀取抵達(dá)的請求報(bào)文
2、解析
緩存對報(bào)文進(jìn)行解析,提取出URL和各種首部
3、查詢
查看是否有本地副本可用,如果沒有,就獲取一份副本,并將其保存在本地。
4、新鮮度檢測
http通過緩存將服務(wù)器文檔的副本保留一段時(shí)間,在這段時(shí)間里,都認(rèn)為文檔是新鮮的,緩存可以在不聯(lián)系服務(wù)器的情況下直接提供該文檔。但一旦已緩存副本停留時(shí)間太長,超過了文檔的新鮮度限值,就認(rèn)為對象過時(shí)了,在提供該文檔之前,緩存要再次與服務(wù)器進(jìn)行確認(rèn),以查看文檔是否發(fā)生了變化??蛻舳税l(fā)送給緩存的所有請求首部自身都可以強(qiáng)制緩存進(jìn)行再驗(yàn)證,或者避免驗(yàn)證。
5、創(chuàng)建響應(yīng)
緩存會用新的首部和已緩存的主體來構(gòu)建一條響應(yīng)報(bào)文。緩存會向其中插入新鮮度信息(Cache-Control、Age、Expires),并且通常會包含一個Via首部來說明請求是由一個代理緩存提供的。
6、發(fā)送
通過網(wǎng)絡(luò)將響應(yīng)發(fā)回給客戶端
7、日志
可選地創(chuàng)建一個日志文件條目來描述這個事務(wù)

http有一些簡單的機(jī)制可以在不要求服務(wù)器記住有哪些緩存擁有其文檔副本的情況下保持已緩存數(shù)據(jù)與服務(wù)器數(shù)據(jù)之間充分一致。http將這些簡單的機(jī)制稱為文檔過期和服務(wù)器再驗(yàn)證。

文檔過期

通過http Cache-Control(http/1.1)和Expires(http/1.0+)首部,http讓原始服務(wù)器向每個文檔附加了一個過期日期,這些首部說明了在多長時(shí)間內(nèi)可以將這些內(nèi)容視為新鮮的。在緩存文檔過期前,可以以任意頻率使用這些副本,而無需與服務(wù)器聯(lián)系,除非客戶端請求中包含有阻止提供已緩存或未驗(yàn)證資源的首部。一旦已緩存文檔過期,緩存就必須與服務(wù)器進(jìn)行核對,詢問文檔是否被修改過,如果被修改過,就要獲取一份新鮮的副本。由于絕對日期依賴于計(jì)算機(jī)時(shí)鐘的正確設(shè)置,一般更傾向于使用Cache-Control相對日期。

Cache-Control:no-Store
標(biāo)識為no-store的響應(yīng)會禁止保存文檔副本
Cache-Control:no-Cache
標(biāo)識為no-cache的響應(yīng)實(shí)際上時(shí)是可以存儲本地緩存的,只是在與原始服務(wù)器進(jìn)行新鮮度再驗(yàn)證之前,緩存不能提供給客戶端使用
Cache-Control:must-revalidate
可以配置緩存,使其提供一些陳舊(過期)的對象,如果原始服務(wù)器希望嚴(yán)格遵守過期信息,可以增加must-revalidate首部

試探性過期

如果響應(yīng)中沒有Cache-Control:max-age首部,也沒有Expires首部,緩存可以計(jì)算出一個試探性最大試用期。LM-Factor算法是一種常見試探性過期算法,如果文檔中包含了最后修改日期,就可以使用這種算法。LM-Factor算法將最后修改日期作為依據(jù),來估計(jì)文檔有多易變。算法邏輯如下:
1、如果已緩存文檔最后一次修改發(fā)生在很久以前,它可能是一份穩(wěn)定的文檔,不太會突然發(fā)生變化,因此將其繼續(xù)保存正在緩存中比較安全
2、如果已緩存文檔最近被修改過,說明它很可能會頻繁地發(fā)生變化,因此在與服務(wù)器進(jìn)行再驗(yàn)證之前,只應(yīng)該將其緩存很短一段時(shí)間

實(shí)際的LM-Factor算法會計(jì)算緩存與服務(wù)器對話的時(shí)間跟服務(wù)器聲明文檔最后被修改的時(shí)間之間的差值,取這個間隔時(shí)間的一部分,將其作為緩存中的新鮮度持續(xù)時(shí)間。如果最后修改日期也沒有的話,通常會為沒有任何新鮮周期線索的文檔分配一個默認(rèn)的新鮮周期(一個小時(shí)或一天)。有時(shí),比較保守的緩存會將這種試探性新鮮生存周期設(shè)置為0,強(qiáng)制在每次將其提供給客戶端之前都去驗(yàn)證。

服務(wù)器再驗(yàn)證

緩存文檔過期,意味著到了進(jìn)行核對的時(shí)間,需要詢問原始服務(wù)器文檔是否發(fā)生了變化。這種情況被稱為服務(wù)器再驗(yàn)證。如果在驗(yàn)證顯示內(nèi)容發(fā)生了變化,緩存會獲取一份新的文檔副本,取代舊的文檔副本,然后將文檔發(fā)送給客戶端;如果再驗(yàn)證顯示內(nèi)容沒有變化,緩存只需要獲取新的首部,包括一個新的過期日期,并對緩存中的首部進(jìn)行更新。

用條件方法進(jìn)行再驗(yàn)證

http允許緩存向原始服務(wù)器發(fā)送一個“條件GET”,使服務(wù)器只有在文檔與緩存中現(xiàn)有副本不同時(shí),才回送對象主體,常用的兩個首部是If-Modified-Since和If-None-Match。如果服務(wù)器收到的請求既帶有If-Modified-Since又有If-None-Match,那么只有這兩個條件都滿足時(shí),才返回304.

If-Modified-Since

If-Modified-Since再驗(yàn)證請求通常被稱為IMS請求,可以與Last-Modified首部配合工作,參是數(shù)一個日期。如果自指定日期后,文檔被修改了,Get請求就會成功執(zhí)行,返回新的文檔,新文檔會包括一個新的過期日期。如果文檔沒有被修改,條件為假,客戶端會收到一個304 Not Modified響應(yīng)報(bào)文,一般會發(fā)送一個新的過期日期。

If-None-Match

有些情況僅使用最后修改日期再驗(yàn)證是不夠的。

有些文檔可能會被周期性地重寫,但實(shí)際包含的數(shù)據(jù)是一樣的,盡管內(nèi)容沒有變化,但修改日期會發(fā)生變化

有些文檔可能被修改了,但所做修改并不重要,不需要讓世界范圍的緩存都重裝數(shù)據(jù)(例如對拼寫或注釋的修改)

有些服務(wù)器無法準(zhǔn)確地判定文檔的最后修改日期

有些服務(wù)器提供的文檔會在亞秒間隙發(fā)生變化,對這些服務(wù)器來說,以秒為粒度的修改日期就不夠用了

為了解決這些問題,http允許用戶對被稱為實(shí)體標(biāo)簽(ETag)的“版本標(biāo)識符”進(jìn)行比較。實(shí)體標(biāo)簽是附加到文檔上的任意標(biāo)簽,它們可能包含了文檔的序列號或版本名,或者是文檔內(nèi)容的校驗(yàn)和其他指紋信息。當(dāng)發(fā)布者對文檔進(jìn)行修改時(shí),可以修改文檔的實(shí)體標(biāo)簽來說明這個新的版本,緩存就可以用If-None-Match條件首部來請求文檔的新副本了。

瀏覽器控制

瀏覽器中通常有refresh(刷新)和reload(重載)機(jī)制,可以強(qiáng)制對瀏覽器或代理緩存中可能過期的內(nèi)容進(jìn)行刷新。refresh操作會發(fā)布一個附加了Cache-Control請求首部的GET請求,這個請求會強(qiáng)制進(jìn)行再驗(yàn)證,或者無條件地從服務(wù)器獲取文檔。refresh的確切行為取決于特定的瀏覽器、文檔以及攔截緩存的配置。

Chrome中正常重新加載會強(qiáng)制對緩存的文檔副本進(jìn)行再驗(yàn)證,硬性重新加載則直接跳過緩存從原始服務(wù)器請求文檔

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/62142.html

相關(guān)文章

  • HTTP緩存理解

    摘要:原因是,服務(wù)端在進(jìn)行標(biāo)識比較后,只返回部分,通過狀態(tài)碼通知客戶端使用緩存,不再需要將報(bào)文主體部分返回給客戶端。 Http 緩存機(jī)制作為 web 性能優(yōu)化的重要手段,對于從事 Web 開發(fā)的同學(xué)們來說,應(yīng)該是知識體系庫中的一個基礎(chǔ)環(huán)節(jié)。在介紹HTTP緩存之前,作為知識鋪墊,先簡單介紹一下HTTP報(bào)文 準(zhǔn)備 HTTP報(bào)文就是瀏覽器和服務(wù)器間通信時(shí)發(fā)送及響應(yīng)的數(shù)據(jù)塊。瀏覽器向服務(wù)器請求數(shù)據(jù),...

    jackzou 評論0 收藏0
  • HTTP緩存機(jī)制詳解

    摘要:在此,我會嘗試用簡單明了的文字,像大家系統(tǒng)的介紹緩存機(jī)制,期望對各位正確的理解前端緩存有所幫助。兩類緩存規(guī)則可以同時(shí)存在,強(qiáng)制緩存優(yōu)先級高于對比緩存,也就是說,當(dāng)執(zhí)行強(qiáng)制緩存的規(guī)則時(shí),如果緩存生效,直接使用緩存,不再執(zhí)行對比緩存規(guī)則。 前言 在請求一個靜態(tài)文件的時(shí)候(圖片,css,js)等,這些文件的特點(diǎn)是文件不經(jīng)常變化,將這些不經(jīng)常變化的文件存儲起來,對客戶端來說是一個優(yōu)化用戶瀏覽體...

    tinna 評論0 收藏0
  • HTTP緩存機(jī)制詳解

    摘要:在此,我會嘗試用簡單明了的文字,像大家系統(tǒng)的介紹緩存機(jī)制,期望對各位正確的理解前端緩存有所幫助。兩類緩存規(guī)則可以同時(shí)存在,強(qiáng)制緩存優(yōu)先級高于對比緩存,也就是說,當(dāng)執(zhí)行強(qiáng)制緩存的規(guī)則時(shí),如果緩存生效,直接使用緩存,不再執(zhí)行對比緩存規(guī)則。 前言 在請求一個靜態(tài)文件的時(shí)候(圖片,css,js)等,這些文件的特點(diǎn)是文件不經(jīng)常變化,將這些不經(jīng)常變化的文件存儲起來,對客戶端來說是一個優(yōu)化用戶瀏覽體...

    yzzz 評論0 收藏0
  • Http緩存機(jī)制

    摘要:請求過程如下瀏覽器請求靜態(tài)資源服務(wù)器讀取磁盤文件,返給瀏覽器,同時(shí)帶上文件的唯一標(biāo)識當(dāng)瀏覽器上的緩存文件過期時(shí),瀏覽器帶上請求頭等于上一次請求的請求服務(wù)器服務(wù)器比較請求頭里的和文件的。 前言 Http簡介 瀏覽器和服務(wù)器之間通信是通過HTTP協(xié)議,HTTP協(xié)議永遠(yuǎn)都是客戶端發(fā)起請求,服務(wù)器回送響應(yīng)。模型如下: showImg(https://segmentfault.com/img/b...

    keke 評論0 收藏0
  • 前端性能優(yōu)化指南

    摘要:為了可以頂下這個雷,特意買了高性能網(wǎng)站建設(shè)指南。規(guī)則七避免使用表達(dá)式原因表達(dá)式在你不知道得情況下執(zhí)行多次,嚴(yán)重影響前端性能。這也是會降低前端性能的。 最近要實(shí)現(xiàn)前端性能探測,可是對于一個剛?cè)肼殘龅奈襾碚f前端性能是個啥,我還是個只追求頁面展示效果的娃兒~。為了可以頂下這個雷,特意買了高性能網(wǎng)站建設(shè)指南。這本書真的不錯,強(qiáng)烈推薦看到本文的朋友看一下。 規(guī)則一 減少http請求數(shù) 原因:為什...

    Ethan815 評論0 收藏0
  • Yahoo前端優(yōu)化性能規(guī)則

    摘要:規(guī)則使用內(nèi)容發(fā)布網(wǎng)絡(luò)用戶同服務(wù)器的距離會對頁面響應(yīng)時(shí)間產(chǎn)生影響。這不僅能達(dá)到響應(yīng)時(shí)間大幅減少的目的,還很容易實(shí)現(xiàn)。提供動態(tài)頁面會引入特殊的存儲要求數(shù)據(jù)庫連接狀態(tài)管理驗(yàn)證硬件和優(yōu)化等,這些復(fù)雜性超過了的范圍。 鏈接參考: https://developer.yahoo.com/performance/rules.html 只有10%~20%的最終用戶響應(yīng)時(shí)間花在了下載HTML文檔上...

    hiyayiji 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<