在我们浏览一个页面时发现有异常的情况下,通常考虑是不是浏览器做了缓存,所以我们可以使用Ctrl+F5组合键重新请求一次这个页面,重新请求的页面肯定是最新的页面,因为使用Ctrl+F5组合键刷新页面,浏览器会直接向目标URL发送请求,在HTTP请求头中会增加一些请求头告诉服务器需要获取最新的数据,而不是缓存。
- Cache-Control/Pragma
这个HTTP Head字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令,如果知道该页面是否为缓存不仅可以控制浏览器,还可以控制和HTTP相关的缓存或代理服务器。HTTP Head字段有一些可选值:
Cache-Control请求字段被各个浏览器支持得较好,而且它的优先级也比较高,它和其他一些请求字段(如Expires)同时出现时,Cache-Control会覆盖其他字段。
- Expires
Expires通常的使用格式是Expires:Sat,25 Feb 2012 12:22:17 GMT,后面跟着一个日期和时间,超过这个时间值后,缓存的内容将失效,浏览器在发出请求之前检查这个页面的这个字段,如果该页面已经过期了,就重新向服务器发起请求。
- Last-Modified/Etag
Last-Modified/Etag字段一般用于表示服务器上的资源的最后修改时间,资源可以是静态(静态内容自动加上Last-Modified字段)或者动态的内容(如Servlet提供了一个getLastModified方法用于检查某个动态内容是否已经更新),通过这个最后修改时间可以判断当前请求的资源是否是最新的。
一般服务端在响应头中返回一个Last-Modified字段,告诉浏览器这个页面的最后修改时间,如Last-Modified:Sat,25 Feb 2012 12:55:04 GMT,浏览器再次请求时在请求头中增加一个If-Modified-Since:Sat,25 Feb 2012 12:55:04 GMT字段,询问当前缓存的页面是否是最新的,如果是最新的就返回304状态码,告诉浏览器是最新的,服务器也不会传输新的数据。