06 HTTP協議快取控制

2021-09-08 10:47:27 字數 1590 閱讀 5235

一:http協議快取控制

第1次請求時 200 ok

第2次請求時 304 not modified 未修改狀態
解釋: 在網路上,有一些快取伺服器,另, 瀏覽器自身也有快取功能.
基於乙個前提--不會經常改動, 伺服器在返回200的同時,還返回該的」簽名」-- etag  ,(簽名可以理解的」指紋」).
當瀏覽再次訪問該時,去伺服器校驗」指紋」,
如果沒有變化,直接使用快取中的,這樣減輕了伺服器負擔.
二:抓包觀察分析

三:http協議與快取控制
如果**比較大,有n臺快取伺服器,那麼這n臺快取伺服器,如何處理主伺服器上檔案,

1:要不要快取

2:快取多久?

思考----這說明 快取伺服器與主伺服器之間,應該有一些協議,來說明這2個問題?

追問----用什麼協議來說明這2個問題?

答 -----還是http協議,用頭資訊 cache-control來控制

具體用法:

在主伺服器, 開啟apache的 expires擴充套件,利用該擴充套件來控制,css,html等檔案

控制是否快取,及快取生命週期.

在.htaccess中,具體語法如下:

expiresdefault "[plus] {}*"

expiresbytype type/encoding "[plus] {}*"

expiresdefault 是設定預設的快取引數

expiresbytype 是按照檔案型別來設計獨特的快取引數

我們用第2種來做測試,給jpg設定1個月的生存週期.

後面4個引數怎麼理解?

base : 基於哪個時間點來計算快取有效期

access/now : 基於請求/響應的那一瞬間,比如從此瞬間到1個月之後.

modification: 基於被請求檔案的最後修改日期來計算. 比如 最後修改日期的後1週內仍然有效.

num: 快取時間的大小  (30)

type: 快取時間的單位  (天)

例項:

如果這是在集群環境裡, 快取伺服器得到此,將會認為乙個月內有效.

減輕了主伺服器負擔.

我們能否設定伺服器,不讓用快取呢?

比如有些個人資訊同,不允許快取伺服器快取,必須到主伺服器去請求.

control-cache: no-store,must-revalidate ; // 這意味著不允許快取,必須去主伺服器驗證.

可以利用apache的header模組

http協議之快取

http協議快取控制 第一次請求時200 ok 第二次請求304 not modified 為修改狀態 解釋 在網路上有一些快取伺服器,另外瀏覽器自身也有快取功能。基於乙個前提 不會經常改動,伺服器在返回200的時候,還返回該的 簽名 etag 簽名可以理解為的 指紋 當瀏覽器再次訪問該時,去伺服器...

HTTP 協議快取機制

瀏覽器 http 協議快取機制詳解 收藏 xrzs 破譯 粽 子 拿最高懸賞!最近在準備優化日誌請求時遇到了一些令人疑惑的問題,比如為什麼響應頭里出現了兩個 cache control 為什麼明明設定了 no cache 卻還是發請求,為什麼多次訪問時有時請求裡帶了 etag,有時又沒有帶?等等。後...

HTTP協議的快取

http的快取主要是通過請求和相應報文頭部的幾個欄位來控制快取的。也就是cache control後面的字段 快取未更改的資源 etag頭的乙個典型用例是快取未更改的資源。如果使用者再次訪問給定的url 設有etag欄位 顯示資源過期了且不可用,客戶端就傳送值為etag的if none matchh...