Cache for what?
簡單的說是為了節省流量 > 後端不能總是一直回復同樣的內容吧, 非常浪費資源
所以我們可以在Client端把訪問過的內容快取起來, 待下次要用時再直接從這兒拿出來
Expire
目前存在的方法是在HEADER加入Expires日期
Expires: Wed, 21 Oct 2017 07:28:00 GMT
告訴瀏覽器指定期間內, 相同的請求的話, 就去讀快取
Cache Control, max-age
除了指定明確日期之外, 我們也可以指定保存期限
Cache-Control: max-age=30
告訴瀏覽器, 快取的資料只有三十秒的保存期限
除此之外,
我們也可以在HEADER加入檔案的最後修改時間
Last-Modified
Cache-Control: max-age=31536000
Last-Modified: 2017-01-01 13:00:00
目的是, 資料過期後, 瀏覽器可以用這個日期去詢問伺服器, 快取內的資料有沒有必要更新
If-Modified-Since: 2017-01-01 13:00:00
如果資料不變, 當然就繼續用嘍
除了用日期外,
另一個方法是使用ETag來判別檔案有沒有被修改
ETag
簡單的說, ETag有點像檔案內容的hash值
當檔案一改變ETag就會不一樣
所以瀏覽器可以根據後端給的ETag,
詢問伺服器使否要更新快取的內容還是繼續沿用原本的資料
詢問伺服器使否要更新快取的內容還是繼續沿用原本的資料
Server Response Header
ETag: "25749G2"
Browser Request Header
if-None-Match: 25749G2
留言
張貼留言