web缓存策略学习,验证(nginx)。
什么是强制缓存和策略缓存?
强制缓存的条件是什么?
策略缓存下,客户端和服务端请求涉及哪些header?
关于缓存
缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。当 web 缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。
缓存操作的目标
缓存策略仅适用于 get 请求
缓存控制(策略)
缓存控制是由 浏览器
服务端
根据header头来共同作用的结果
根据 是否和服务端进行交互
可以分为 强制缓存
和 协商缓存
强制缓存
当满足一下条件时,浏览器会直接取用缓存数据
- 存在缓存数据
- 缓存数据没有过期
cache-control
的max-age
在有效期内(如果cache-control
设置其它值,比如no-cache
此时不会触发强制缓存策略)- 或者
expires
在有效期内
协商缓存
当缓存的数据已经过期,客户端(浏览器)会向服务端 询问
。
如果客户端的缓存有效(服务端返回304 Not Modified),那么客户端(浏览器)会直接使用缓存数据。否则会从服务端重新请求。
TODO
私有缓存 代理缓存 应用场景
私有缓存只能用于单独用户。你可能已经见过浏览器设置中的“缓存”选项。浏览器缓存拥有用户通过 HTTP 下载的所有文档。这些缓存为浏览过的文档提供向后/向前导航,保存网页,查看源码等功能,可以避免再次向服务器发起多余的请求。它同样可以提供缓存内容的离线浏览。
(共享)代理缓存
共享缓存可以被多个用户使用。例如,ISP 或你所在的公司可能会架设一个 web 代理来作为本地网络基础的一部分提供给用户。这样热门的资源就会被重复使用,减少网络拥堵与延迟。