lbp的blog

纸上得来终觉浅,绝知此事要躬行

0%

web性能优化-http缓存

web缓存策略学习,验证(nginx)。
什么是强制缓存和策略缓存?
强制缓存的条件是什么?
策略缓存下,客户端和服务端请求涉及哪些header?

关于缓存

缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。当 web 缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。

不同种类的缓存

缓存操作的目标

缓存策略仅适用于 get 请求

缓存控制(策略)

缓存控制是由 浏览器 服务端 根据header头来共同作用的结果

根据 是否和服务端进行交互 可以分为 强制缓存协商缓存

强制缓存

当满足一下条件时,浏览器会直接取用缓存数据

  • 存在缓存数据
  • 缓存数据没有过期
    • cache-controlmax-age 在有效期内(如果 cache-control 设置其它值,比如 no-cache 此时不会触发强制缓存策略)
    • 或者 expires 在有效期内

协商缓存

当缓存的数据已经过期,客户端(浏览器)会向服务端 询问

如果客户端的缓存有效(服务端返回304 Not Modified),那么客户端(浏览器)会直接使用缓存数据。否则会从服务端重新请求。

TODO

私有缓存 代理缓存 应用场景

私有缓存只能用于单独用户。你可能已经见过浏览器设置中的“缓存”选项。浏览器缓存拥有用户通过 HTTP 下载的所有文档。这些缓存为浏览过的文档提供向后/向前导航,保存网页,查看源码等功能,可以避免再次向服务器发起多余的请求。它同样可以提供缓存内容的离线浏览。

(共享)代理缓存
共享缓存可以被多个用户使用。例如,ISP 或你所在的公司可能会架设一个 web 代理来作为本地网络基础的一部分提供给用户。这样热门的资源就会被重复使用,减少网络拥堵与延迟。

参考

MDN-HTTP 缓存
https://www.jianshu.com/p/227cee9c8d15