浏览器缓存
If-Modified-Since和Last-Modified
1.If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT(如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码,在客户端设置)
2.Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT(请求资源的最后修改时间,在服务端设置)
3.发起请求的时候If-Modified-Since会去和请求资源的Last-Modified对比时间
Expires:HTTP 1.0
1. Expires: Thu, 01 Dec 2010 16:00:00 GMT(响应过期的日期和时间,服务端设置)
ETag和If-None-Match
1.ETag: “737060cd8c284d8af7ad3082f209582d”(请求变量的实体标签的当前值,服务器端设置)
2.If-None-Match: “737060cd8c284d8af7ad3082f209582d”(如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变,客户端设置)
Control-Cache
(1)、max-age:用来设置资源(representations)可以被缓存多长时间,单位为秒;
(2)、s-maxage:和max-age是一样的,不过它只针对代理服务器缓存而言;
(3)、public:指示响应可被任何缓存区缓存;
(4)、private:客户端可以缓存,而不能被代理服务器缓存;
(5)、no-cache:强制客户端直接向服务器发送请求,也就是说每次请求都必须向服务器发送。服务器接收到请求,然后判断资源是否变更,是则返回新内容,否则返回304,未变更。这个很容易让人产生误解,使人误以为是响应不被缓存。实际上Cache-Control: no-cache是会被缓存的,只不过每次在向客户端(浏览器)提供响应数据时,缓存都要向服务器评估缓存响应的有效性。
(6)、no-store:不被缓存。