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