這幾天聽到一個新名詞,eTag,我想說這究竟是什麼東西,要上高速公路了嗎?、還是什麼特別的tag呢? 原來是快取機制使用的,快取簡單來說,就是把不易變動的資料,存在client端,對clent來說,如果需要,可以直接拿,快速省時間,對於server來說,可以省下不必要的傳輸成本,那快取機制延伸到快取策略,都是根據不同需求與情境演變,以下找到一篇好文,去蕪存菁,作者簡單的舉例說明,讓人快速了解快取機制的重要關鍵字與情境,以下紀錄心得
https://blog.techbridge.cc/2017/06/17/cache-introduction/
- 為什麼要快取?
- 節省傳輸成本,因為每一次傳輸都是一筆錢,尤其各種商品圖片
- 提升用戶體驗,因為可以快速取得自己有興趣的商品照片
- 有哪些快取關鍵字,各自代表什麼意義?
- Expires: 到期時間點,可能被瀏覽器使用電腦本身時間,判斷過期
- Cache-Control
- max-age 資源有效時間(秒)
- no-store 快取策略,不存任何快取
- no-cache 快取策略,存快取,但馬上過期,需要持續確認是否有異動
- Last-Modified & If-Modified-Since 資源上一次變動時間
- Last-Modified 放在 res Header跟著資源回到 browser
- If-Modified-Since 下一次請求,放在 req Header 提供給Server做檢查
- Etag & If-None-Match 資源Hash值(類似但不是)
- ETag 放在 res Header跟著資源回到 browser
- If-None-Match 下一次請求,放在 req Header 提供給Server做檢查是否相符
- 小結
- Expires 、 Cache-Control: max-age
- Server 跟 Browser 説這個資源的新鮮度(有效日期、期間)
- Last-Modified & If-Modified-Since , Etag & If-None-Match
- 在過期後,Browser 用來跟 Server 確定資源是否有被更新用
- Cache-Control: no-store 、Cache-Control: no-cache
- 在什麼情況,要用哪些快取機制?
- 資料不常變動,不及時更新也不會有影響 → 可以設定固定時間、時間點過期
- Expires 、 Cache-Control: max-age
- 資料過期,如果server沒有異動,也可以繼續用,但是要跟 Server 確認
- Last-Modified & If-Modified-Since , Etag & If-None-Match
- 資料異動時間不一定,但是一但有變動,就要更新給 user
- Cache-Control: max-age: 0 + Etag ,Browser 一拿到資料會存起來,但馬上就過期,所以要一直確認是不是新的
- Cache-Control: no-cache 是第一點的一鍵設定
- 組合技,讓問都不用問,近一步省下傳輸量
- 雙快取策略,詳情請見文章
- 還有什麼值得紀錄
- 價值面溝通
- 跨部門溝通,需要有效抓住對方重視價值
- 練習價值轉換,將我方重視價值,轉換成對方重視價值 (ex. (我方) 使用快取可以減少不必要傳輸量 → (對方) 使用快取,每月可以省下200元)
- 每個人都有自己所重視的事情,沒有人有義務要去理解你,所以要練習 轉換價值、進行溝通