参考:http cache-control 指令的设置以及意义
Http头介绍:Expires,Cache-Control,Last-Modified,ETag
可缓存性
public
表明响应可以被任何对象(包括:发送请求的客户端,代理服务器,等等)缓存。
private
表明响应只能被单个用户缓存,不能作为共享缓存(即代理服务器不能缓存它)。
no-cache
强制所有缓存了该响应的缓存用户,在使用已存储的缓存数据前,发送带验证器的请求到原始服务器
only-if-cached
表明如果缓存存在,只使用缓存,无论原始服务器数据是否有更新。
到期
max-age=<seconds>
设置缓存存储的最大周期,超过这个时间缓存被认为过期(单位秒)。与Expires相反,时间是相对于请求的时间。
s-maxage=<seconds>
覆盖max-age 或者 Expires 头,但是仅适用于共享缓存(比如各个代理),并且私有缓存中它被忽略。
max-stale[=<seconds>]
表明客户端愿意接收一个已经过期的资源。 可选的设置一个时间(单位秒),表示响应不能超过的过时时间。
min-fresh=<seconds>
表示客户端希望在指定的时间内获取最新的响应。
stale-while-revalidate=<seconds>
...
stale-if-error=<seconds>
...
max-age:指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应;
min-fresh:指示客户机可以接收响应时间小于当前时间加上指定时间的响应;
max-stale:指示客户机可以接收超出超时期间的响应消息。
如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
重新验证和重新加载
must-revalidate
缓存必须在使用之前验证旧资源的状态,并且不可使用过期资源。
proxy-revalidate
与must-revalidate作用相同,但它仅适用于共享缓存(例如代理),并被私有缓存忽略。
immutable
表示响应正文不会随时间而改变。
资源(如果未过期)在服务器上不发生改变,因此客户端不应发送重新验证请求头
(例如If-None-Match或If-Modified-Since)来检查更新,
即使用户显式地刷新页面。
在Firefox中,immutable只能被用在 https:// transactions. 有关更多信息,请参阅这里.
其他
no-store
缓存不应存储有关客户端请求或服务器响应的任何内容。
no-transform
不得对资源进行转换或转变。
Content-Encoding, Content-Range, Content-Type等HTTP头不能由代理修改。
例如,非透明代理可以对图像格式进行转换,以便节省缓存空间或者减少缓慢链路上的流量。
no-transform指令不允许这样做。
示例一:禁止缓存
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
示例二:缓存静态资源
对于应用程序中不会改变的文件,你通常可以在发送响应头前添加积极缓存。
这包括例如由应用程序提供的静态文件,例如图像,CSS文件和JavaScript文件。另请参阅Expires标题。
Cache-Control:public, max-age=31536000
其他
如果max-age=0出现在请求中,则代表【浏览器】要求【服务器】,此次请求必须重新返回最新文件(请求完成后,你会看到http状态码是200);
如果max-age=0出现在响应中,则代表【服务器】要求【浏览器】你在使用本地缓存的时候,必须先和服务器进行一遍通信,将etag、 If-Not-Modified等字段传递给服务器以便验证当前浏览器端使用的文件是否是最新的(如果浏览器用的是最新的文件,http状态码返回304,服务器告诉浏览器使用本地缓存即可;否则返回200,浏览器得自己吧文件重新下载一遍)。
Pragma: no-cache与Cache-Control: no-cache区别:
Pragma: no-cache兼容http 1.0 ,
Cache-Control: no-cache是http 1.1提供的。
因此,Pragma: no-cache可以应用到http 1.0 和http 1.1,而Cache-Control: no-cache只能应用于http 1.1.
参考:“Cache-control”常见的取值有private、no-cache、max-age、must-revalidate等
Expires/Cache-Control 区别:
Expires/Cache-Control Header是控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据。
只是Cache-Control比Expires可以控制的多一些, 而且Cache-Control会重写Expires的规则。
HTTP1.0和HTTP1.1的主要区别:
1,HTTP/1.0协议使用非持久连接,即在非持久连接下,一个tcp连接只传输一个Web对象,;
2,HTTP/1.1默认使用持久连接(然而,HTTP/1.1协议的客户机和服务器可以配置成使用非持久连接)。
在持久连接下,不必为每个Web对象的传送建立一个新的连接,一个连接中可以传输多个对象!
查看电脑上http版本:
控制面板–>Internet属性–>高级