您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關瀏覽器緩存策略的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
為了提高站點的訪問速度,使用緩存來優化。緩存主要分為 強緩存和協商緩存。
協商緩存
主要分為last-modified、etag。下面我主要通過代碼修改來表現各個緩存之間的區別。先討論協商緩存。last-modified表示文件的修改日期,如果文件做了修改那就應該重新獲取文件。last-modified是文件修改后根據服務器的時間生成。
如果我們修改了文件則會重新獲取,status就為200
再次刷新就會返回304表示緩存已經是最新不需要再更新。
請求中會詢問相關文件修改時間(If-Modified-Since)
請求
響應
ETag:是一個可以與Web資源關聯的記號(token)
如果文件被替換,就會生成唯一的etag。
替換前的文件
替換后的文件
PS: 如果是使用了多臺服務器做負載均衡的話,會出現etag不一致問題。Apache 的默認ETag的值總是由文件的索引節點(Inode)、大小(Size)、最后修改時間(MTime)決定,我們只需要去掉Inode即可
強緩存相比協商緩存更為徹底,在強緩存下瀏覽器不會對服務器發起請求。
強緩存:主要分為expires和cache-control
Expires: 表示存在時間,允許客戶端在這個時間之前不去檢查(發請求),等同max-age的 效果。但是如果同時存在,則被Cache-Control的max-age覆蓋。 格式: Expires :時間,后面跟一個時間或者日期,超過這個時間后緩存失效。也就是瀏覽器發出請求之前,會檢查這個時間是否失效,若失效,則瀏覽器會重新發出請求。
開啟apache expires_mod之后,瀏覽器在第一次將資源請求之后會緩存。
Cache-Control
Cache-Control 在 HTTP 響應頭中,用于指示代理和 UA 使用何種緩存策略。比如:
cache-control中設置max-age 為最長的緩存時間。在該時間內則使用緩存。
設置為no-cache之后則不會再進行緩存。
在使用apache對瀏覽器緩存進行測試過程中發現。在不設置 cache-control的情況下,瀏覽器會根據自身的情況去取舍相關的緩存,可以從這查看。如果大家在服務器配置過程中發現,自己沒有配置任何的緩存信息但是瀏覽器卻緩存了資源就不用驚訝。
關于瀏覽器緩存策略的示例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。