接續前面效能優化,想要了解一下快取
前面有提到快取的目的是希望可以減少伺服器的壓力、縮短載入時間,把已經下載過或計算過的東西保存起來,下次需要時直接用,不必重新請求或計算
以下介紹幾種快取和一些觀念
Cache-Control
:
Cache-Control: max-age=60
代表資源可以存在快取60秒,如果超過60秒後就要重新發送新的請求了
Cache-Control: no-store
:表示不要保留任何東西在快取,要每次都要去server請求。例如:一些比較私密的資料或是經常變動的內容Etag:
伺服器回應時會帶上一個etag讓瀏覽器存起來
Cache-Control: max-age=6000
ETag: "1234567890abcd99cc1d2ac91123"
快取時效過後,會帶上If-None-Match
If-None-Match: "1234567890abcd99cc1d2ac91123"
伺服器會判斷這個etag,若判斷沒變,就直接回快取拿資源,如果不同的話就要在重新向server請求
其他:
Last-Modified
: 告訴瀏覽器這份資源最後修改時間If-Modified-Since
: 下次請求時帶上去,伺服器判斷如果沒更新,就回 304 Not Modified
特性:
PWA (Progressive Web App)
跟 HTTP Cache 不同的是:
使用基本流程:
Register:
瀏覽器偵測到你的網站有service worker腳本來註冊(通常是sw.js
)
Install:
建立快取,會在 background 啟動並安裝一個Service Worker,同時也會把一些必要的檔案先快取下來(一些靜態資源)
Activate:
舊快取清理、新版本啟用
Fetch:
當使用者請求資源時,攔截使用者發出的請求,決定要回快取還是去抓新的
https://ithelp.ithome.com.tw/articles/10276125
https://ithelp.ithome.com.tw/articles/10276666
https://developer.mozilla.org/zh-CN/docs/Web/Progressive_web_apps