国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

http緩存規則

wupengyu / 3230人閱讀

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

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

可以用已有的副本為某些到達緩存的請求提供服務,被稱為緩存命中(cache hit),若請求沒有副本可用,被轉發給原始服務器,被稱為緩存未命中(cache miss)。原始服務器的內容可能會發生變化,緩存要不時對其進行檢測,被稱為http再驗證(revalidation)。

對緩存的副本進行再驗證時,會向原始服務器發送一個小的再驗證請求,如果內容沒有變化,服務器會以一個小的304 Not Modified進行響應,副本依然有效,被再次標識為暫時新鮮的,并將副本提供給客戶端,這被稱為再驗證命中或緩慢命中,這種方式比單純的緩存命中要慢。

緩存處理步驟

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

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

文檔過期

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

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

試探性過期

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

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

服務器再驗證

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

用條件方法進行再驗證

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

If-Modified-Since

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

If-None-Match

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

有些文檔可能會被周期性地重寫,但實際包含的數據是一樣的,盡管內容沒有變化,但修改日期會發生變化

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

有些服務器無法準確地判定文檔的最后修改日期

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

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

瀏覽器控制

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

Chrome中正常重新加載會強制對緩存的文檔副本進行再驗證,硬性重新加載則直接跳過緩存從原始服務器請求文檔

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/62142.html

相關文章

  • HTTP緩存理解

    摘要:原因是,服務端在進行標識比較后,只返回部分,通過狀態碼通知客戶端使用緩存,不再需要將報文主體部分返回給客戶端。 Http 緩存機制作為 web 性能優化的重要手段,對于從事 Web 開發的同學們來說,應該是知識體系庫中的一個基礎環節。在介紹HTTP緩存之前,作為知識鋪墊,先簡單介紹一下HTTP報文 準備 HTTP報文就是瀏覽器和服務器間通信時發送及響應的數據塊。瀏覽器向服務器請求數據,...

    jackzou 評論0 收藏0
  • HTTP緩存機制詳解

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

    tinna 評論0 收藏0
  • HTTP緩存機制詳解

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

    yzzz 評論0 收藏0
  • Http緩存機制

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

    keke 評論0 收藏0
  • 前端性能優化指南

    摘要:為了可以頂下這個雷,特意買了高性能網站建設指南。規則七避免使用表達式原因表達式在你不知道得情況下執行多次,嚴重影響前端性能。這也是會降低前端性能的。 最近要實現前端性能探測,可是對于一個剛入職場的我來說前端性能是個啥,我還是個只追求頁面展示效果的娃兒~。為了可以頂下這個雷,特意買了高性能網站建設指南。這本書真的不錯,強烈推薦看到本文的朋友看一下。 規則一 減少http請求數 原因:為什...

    Ethan815 評論0 收藏0
  • Yahoo前端優化性能規則

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

    hiyayiji 評論0 收藏0

發表評論

0條評論

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