http缓存
- 缓存参数说明
- 缓存头小记
缓存参数说明
last-modified: 表示文档的最后修改时间、当去服务器验证时会用到这个时间
expires: http/1.0 规范定义、表示文档在浏览器的中的过期时间、当缓存内容时间超过这个时间、需要重新去服务器获取最新的内容
cache-control:http/1.1定义、表示浏览器缓存控制、max-age=20表示文档可以在浏览器中缓存20s
cache-control的优先级较高
刷新的时候、会发送if-modify-since头、值为上次请求响应肿的last-modify、即浏览器会用这个时间去服务器端验证内容是否发生了变更、、
强制刷新的时候、不会发生if-modify-since头、但会带上 Cache-control: no-cache 和 Program: no-cache这是为了通知服务器端提供一份最新的内容
从A页面跳转到A页面 或 从A页面跳转到B页面时、如果内容还在缓存时间之内、会直接从浏览器获取内容、而不去服务器端验证
age: 一般用于缓存代理层(如:cdn)、强制刷新后会发现其不断变化、这代表次内容在缓存代理层从创建到现在生存了多长时间
vary:一般用于缓存代理层(如:cdn)eg. 响应头列表、eg. Vary:Accept-Encoding 主要用于通知缓存服务器对于相同URL有着不同版本的响应、如制定响应头为:Vary: Accept-Encoding
请求头来判断不同版本缓存内容、如 Accept-Encoding:gzip版本、无accept-Encoding请求头版本
Via:主要用于代理层(如:CND)表示访问到最终内容前经过了哪些代理层、用的是什么协议、代理层是否命中缓存等、可以进行一些故障诊断
ETag:是用于发送到服务器端进行内容变更验证的、而cache-control是用于控制缓存时间的(浏览器、代理层等)
缓存头小记
public: 响应头、可共享缓存(客户端和代理服务器都可以缓存)、响应可以被缓存
private: 响应头、可私有缓存(客户端可以缓存、代理服务器不能缓存)eg.用户私有内容
no-cache:请求头使用时表示需要回源验证、响应头使用时表示允许缓存者缓存响应、但是使用时必须回源验证
no-store: 请求和响应禁止缓存
max-age: 缓存的保鲜期和expires类似、根据该值校验缓存是否新鲜
s-maxage: 与max-age的区别是其仅用于共享缓存(如:缓存代理服务器)、客户端缓存过期时、要重新验证
min-stale:缓存的最大陈旧时间、缓存不是最新的但还在过期时间之内时、可以返回陈旧内容
must-revalidate:缓存过期后、必须回源验证、与no-cache类似、但更严格、不能使用后台重新验证
proxy-revalidate:与must-revalidate类似、但只对缓存代理服务器有效、客户端遇到此头需要回源验证
only-if-cached:请求时、使用该头表示只从缓存获取响应内容、若没有、则返回504 gateway timeout