iT邦幫忙

2021 iThome 鐵人賽

DAY 30
0
自我挑戰組

日常任務成長紀錄系列 第 30

快取機制 心得紀錄

這幾天聽到一個新名詞,eTag,我想說這究竟是什麼東西,要上高速公路了嗎?、還是什麼特別的tag呢? 原來是快取機制使用的,快取簡單來說,就是把不易變動的資料,存在client端,對clent來說,如果需要,可以直接拿,快速省時間,對於server來說,可以省下不必要的傳輸成本,那快取機制延伸到快取策略,都是根據不同需求與情境演變,以下找到一篇好文,去蕪存菁,作者簡單的舉例說明,讓人快速了解快取機制的重要關鍵字與情境,以下紀錄心得

https://blog.techbridge.cc/2017/06/17/cache-introduction/

  1. 為什麼要快取?

    1. 節省傳輸成本,因為每一次傳輸都是一筆錢,尤其各種商品圖片
    2. 提升用戶體驗,因為可以快速取得自己有興趣的商品照片
  2. 有哪些快取關鍵字,各自代表什麼意義?

    • 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
        • 快取策略,一件設定的概念
  3. 在什麼情況,要用哪些快取機制?

    1. 資料不常變動,不及時更新也不會有影響 → 可以設定固定時間、時間點過期
      1. Expires 、 Cache-Control: max-age
    2. 資料過期,如果server沒有異動,也可以繼續用,但是要跟 Server 確認
      1. Last-Modified & If-Modified-Since , Etag & If-None-Match
    3. 資料異動時間不一定,但是一但有變動,就要更新給 user
      1. Cache-Control: max-age: 0 + Etag ,Browser 一拿到資料會存起來,但馬上就過期,所以要一直確認是不是新的
      2. Cache-Control: no-cache 是第一點的一鍵設定
    4. 組合技,讓問都不用問,近一步省下傳輸量
      1. 雙快取策略,詳情請見文章
  4. 還有什麼值得紀錄

    1. 價值面溝通
      1. 跨部門溝通,需要有效抓住對方重視價值
      2. 練習價值轉換,將我方重視價值,轉換成對方重視價值 (ex. (我方) 使用快取可以減少不必要傳輸量 → (對方) 使用快取,每月可以省下200元)
      3. 每個人都有自己所重視的事情,沒有人有義務要去理解你,所以要練習 轉換價值、進行溝通

上一篇
[心得]資料異動行為,需要有意識的風險管理
系列文
日常任務成長紀錄30

尚未有邦友留言

立即登入留言