浏览器缓存相关
? 常用到的緩存有:瀏覽器緩存,DNS緩存,服務器緩存。總結下前端優化中常用到的瀏覽器緩存。
? expires和cache-control用于本地緩存,Last-Modified和Etag用于協商緩存。
? expires是http1.0定義的,是一個具體的日期時間,使用時,需要服務器和PC時鐘同步,cache-control是http1.1定義的,是一個相對時間,相對時間就不必要求時鐘同步了。cache-control的max-age是一個秒數,若與expires同時存在,則cache-control生效。若判斷本地緩存沒有過期,會直接從緩存讀取,不發送新的請求。若緩存過期,重新請求。
? Last-Modified和Etag用于判斷服務器文件是否有更新。Last-Modified是一個具體日期時間,Etag是一個字符串。請求頭中與之相對應的是If-Modified-Since和If-None-Match。Etag比Last-Modified更精細。首次請求沒有對應信息,之后的請求,到服務器端會判斷,若標識相同,說明文件沒有更改,返回304,瀏覽器接收到304會從緩存中讀取,緩存命中;若有更改,將返回新資源。
? 若用戶使用F5刷新頁面,無論expires和cache-control是否過期,都不會生效,但Last-Modified和Etag會有效;使用ctrl+F5刷新時,Last-Modified和Etag也無效,會強制從服務器下載資源。
? 總體而言,在服務器配置正確的情況下,
通過有效期控制 Expires / Pragma / Cache-Control 優點:瀏覽器不需要訪問Server來驗證資源狀態 缺點:不夠準確,指定的緩存時間段內瀏覽器默認不會再次請求資源,當產生緊急外網bug時發布的資源無法及時更新到瀏覽器端。
通過資源狀態控制 Last-Modified + If-Modified-Since / ETag + If-None-Match 優點:緩存控制比較精確,隨時發布隨時生效。 缺點:即使資源已存在于瀏覽器本地緩存中,也需要請求一次服務器驗證資源狀態以驗證緩存有效性
轉載于:https://www.cnblogs.com/linda586586/p/4127103.html
總結
- 上一篇: 运20飞机代表我国军事的突破?
- 下一篇: 合理提升WEB前端性能