Last-Modified
在HTTP/1.0协议中,Last-Modified是控制缓存的一个非常重要的HTTP头。如果需要控制浏览器的缓存,服务器首先必须发送一 个以UTC时间为值的Last-Modifeid头,当第二次访问这个页面时,浏览器会发送一个If-Modified-Since头给服务器,让服务器 判断是否有必要更新内容,这个If-Modified-Since头的值就是上次访问页面时,浏览器发送的Last-Modifeid头的值。
Expires
Expires是HTTP/1.0中另外一个很重要的HTTP头,它表示缓存的存在时间,告诉客户端浏览器在这个时间之前不对服务器发送请求,而直接使用浏览器的缓存。
Pragma: no-cache
在HTTP/1.0中,可以使用Pragma: no-cache头来告诉浏览器不要缓存内容,它相当于HTTP/1.1中的Cache-Control:no-cache。
Cache-Control
Cache-Control响应头的语法为:
Cache-Control = “Cache-Control” “:”; #缓存响应指令 缓存响应指令为一下几个中的任意一个: 1. public 2. private 3. no-cache 4. no-store 5. no-transform 6. must-revalidate 7. proxy-revalidate 8. max-age=时间 9. s-maxage=时间
详细介绍一下这几个指令的具体含义: 1. public 指示响应数据可以被任何客户端缓存 2. private 指示响应数据可以被非共享缓存所缓存。这表明响应的数据可以被发送请求的浏览器缓存,而不能被中介所缓存 3. no-cache 指示响应数据不能被任何接受响应的客户端所缓存 4. no-store 指示所传送的响应数据除了不能被缓存,也不能存入磁盘。一般用于敏感数据,以免数据被复制。 5. must-revalidate 指示所有的缓存都必须重新验证,在这个过程中,浏览器会发送一个If-Modified-Since头。如果服务器程序验证得出当前的响应数据为最新的数 据,那么服务器应当返回一个304 Not Modified响应给客户端,否则响应数据将再次被发送到客户端。 6. proxy-revalidate 与must-revalidate相似,不同的是用来指示共享缓存。 7. max-age 数据经过max-age设置的秒数后就会失效,相当于HTTP/1.0中的Expires头。如果在一次响应中同时设置了max-age和 Expires,那么max-age将具有较高的优先级。
8. s-maxage 与max-age相似,不同的是用来指示共享缓存。