HTML 缓存配置格式
HTML文件通过标签的 http-equiv
属性来配置HTML文件的 http 响应头。
如:
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
Cache-Control
Cache-Control 被用于在 http 请求和响应中,通过指定指令来实现缓存机制。
缓存指令是单向的,这意味着在请求头中设置的指令,不一定被包含在响应头中。
请求时的缓存指令:
max-age=<seconds>
max-stale[=<seconds>]
min-fresh=<seconds>
no-cache
no-store
no-transform
only-if-cached
响应消息中的指令:
must-revalidate
no-cache
no-store
no-transform
public
private
proxy-revalidate
max-age=<seconds>
s-maxage=<seconds>
各个消息中的指令含义如下:
Public
响应可以被任何对象缓存。如:发送请求的客户端,代理服务器等等。
Private
表明响应只能被单个用户缓存,不能作为共享缓存(即代理服务器不能缓存它)。私有缓存可以缓存响应内容,比如:对应用户的本地浏览器。
no-cache
指示请求或响应消息不能缓存。在发布缓存副本之前,强制要求缓存把请求提交给原始服务器进行验证(协商缓存验证)。
no-store
用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。缓存不应存储有关客户端请求或服务器响应的任何内容,即不使用任何缓存。
max-age
设置缓存存储的最大周期,相对于请求时间,超过这个时间缓存被认为过期(单位秒)。
s-maxage
覆盖max-age或者Expires头,但是仅适用于共享缓存(比如各个代理),私有缓存会忽略它。
max-stale
表明客户端愿意接收一个已经过期的资源。可以设置一个可选的秒数,表示响应不能已经过时超过该给定的时间。
指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
min-fresh
表示客户端希望获取一个能在指定的秒数内保持其最新状态的响应。
指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
Pragma
建议只在需要兼容 HTTP/1.0 客户端的场合下应用 Pragma 首部。
HTTP/1.1 中如果没有 Cache-Control,Pragma: no-cache 与 Cache-Control: no-cache 一致,但是不建议。
<meta http-equiv="pragma" content="no-cache">
默认为private。
其作用根据不同的重新浏览方式分为以下几种情况:
1. 打开新窗口
值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。 而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如:
Cache-control: max-age=5
表示当访问此网页后的5秒内再次访问不会去服务器)
2. 在地址栏回车
值为private或must-revalidate则只有第一次访问时会访问服务器,以后就不再访问。 值为no-cache,那么每次都会访问。 值为max-age,则在过期之前不会重复访问。
3. 按后退按扭
值为private、must-revalidate、max-age,则不会重访问, 值为no-cache,则每次都重复访问
4. 按刷新按扭 无论为何值,都会重复访问
Cache-control值为“no-cache”时,访问此页面不会在Internet临时文件夹留下页面备份。
Expires
<meta http-equiv="expires" content="0">
Expires 响应头包含日期/时间,即在此时候之后,响应过期。
0 代表着过去的日期,即该资源已经过期。
如果 Cache-Control 设置了 max-age 或者 s-max-age,Expires 会被忽略。
您的赞助将会支持作者创作及本站运维
发表评论