首頁  >  文章  >  web前端  >  瀏覽器快取策略的詳細介紹(圖文)

瀏覽器快取策略的詳細介紹(圖文)

不言
不言轉載
2019-04-08 10:06:532879瀏覽

這篇文章帶給大家的內容是關於瀏覽器快取策略的詳細介紹(圖文),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

為了提高網站的存取速度,使用快取來最佳化。緩存主要分為 強緩存和協商緩存。

協商快取

主要分為last-modified、etag。下面我主要透過程式碼修改來表現各個快取之間的差異。先討論協商快取。 last-modified表示檔案的修改日期,如果檔案做了修改就應該重新取得檔案。 last-modified是檔案修改後根據伺服器的時間產生。

屏幕快照 2019-04-03 下午9.56.29.png

如果我們修改了檔案則會重新取得,status就為200

屏幕快照 2019-04-06 下午3.06.33.png

再刷新就會回傳304表示快取已經是最新不需要再更新。
請求中會詢問相關檔案修改時間(If-Modified-Since)

#請求

瀏覽器快取策略的詳細介紹(圖文)


屏幕快照 2019-04-06 下午3.07.44.png

#回應


ETag:request (1).png是一個可以與Web資源關聯的記號(token)

如果檔案被替換,就會產生唯一的etag。

取代前的檔案

屏幕快照 2019-04-06 下午3.20.11.png

#取代後的檔案

PS: 如果是使用了多台伺服器做負載平衡的話,會出現etag不一致問題。 Apache 的預設ETag的值總是由檔案的索引節點(Inode)、大小(Size)、最後修改時間(MTime)決定,我們只需要去掉Inode即可

強快取


強快取相比協商快取更為徹底,在強快取下瀏覽器不會對伺服器發起請求。

屏幕快照 2019-04-06 下午3.49.38.png強快取:

主要分為expires和cache-control

Expires:
表示存在時間,讓客戶端在​​這個時間之前不去檢查(發送請求),等同max-age的效果。但如果同時存在,則被Cache-Control的max-age覆蓋。格式: Expires :時間,後面跟著一個時間或日期,超過這個時間後快取失效。也就是瀏覽器發出請求之前,會檢查這個時間是否失效,若失效,則瀏覽器會重新發出請求。

    開啟apache expires_mod之後,瀏覽器在第一次將資源請求之後會快取。
  • Cache-Control
Cache-Control 在HTTP 回應頭中,用於指示代理程式和UA 使用何種快取策略。例如:


no-cache 為本次回應無法直接用於後續請求(在沒有向伺服器進行校驗的情況下)

屏幕快照 2019-04-06 下午4.12.30.pngno-store 為禁止快取(不得儲存到非揮發性介質,如果有的話盡量移除,用於敏感資訊)

public為大家都可以快取。
屏幕快照 2019-04-06 下午4.17.44.pngprivate為僅 UA 可快取

cache-control中設定max-age 為最長的快取時間。在該時間內則使用快取。

設定為no-cache之後則不會再進行快取。

######題外話######在使用apache對瀏覽器快取進行測試過程中發現。在不設定 cache-control的情況下,瀏覽器會根據自身的情況去取捨相關的緩存,可以從這裡查看。如果大家在伺服器設定過程中發現,自己沒有配置任何的快取資訊但是瀏覽器卻快取了資源就不用驚訝。 ######【相關推薦:###JavaScript影片教學###】##########

以上是瀏覽器快取策略的詳細介紹(圖文)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除