http缓存

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

你可能感兴趣的:(缓存,无事闲翻书,网站架构)