快取机制 心得纪录

这几天听到一个新名词,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. 每个人都有自己所重视的事情,没有人有义务要去理解你,所以要练习 转换价值、进行沟通

<<:  D30 - 舌尖上的 JS 完食!

>>:  那些被忽略但很好用的 Web API / 结语

[11] [烧瓶里的部落格] 01. 初始化一个 Flask 专案 - 使用工厂模式

後端 side project 就是要 泛舟 部落格啊,不然要干嘛 照官方教学做一个基本的 CRUD...

总结 | ML#Day28

由於自己对ML的所知的大略概念,和Vertex的基本使用方式介绍已经结束,已经能够部署和得到预估值,...

Ubuntu巡航记(4) -- Rust 安装

前言 Rust 是一个现代版的 C/C++ 程序语言,它加入物件导向、套件安装(cargo)、函数式...

Day 15状态管理

为什麽需要状态管理? 在开发应用程序的初期,只需将状态反映在View上即可,但一旦功能变多,介面上的...

13 | WordPress 清单区块 List Block

如果你平常要处理大量文书工作,应该对我们这次介绍的「项目符号和编号」并不陌生,这又另称为清单区块 ...