可能有理解不正确的地方,欢迎批评指正
用chrome第一次请求一个地址(或者ctrl+F5)比如:http://my.oschina.net/img/gotop.gif,产生的request及response如下
注意在response中的几个信息:
Expires:表示的要过期的绝对时间,本例中是2013年的1月16号
Cache-Control:表示要过期的相对时间,本例中是2592000,单位应该是s
为什么要有2个呢,可以去参考这篇博客
这样当下次请求这个地址时会先取客户端本地的时间和这些时间进行比对,如果还未过期,直接返回304,如下图
如果过期了肿么办,必须要明确的是过期了并不代表改变了,还记得大明湖畔的Last-Modified么,
大家请注意,再第一次请求时,reponse中有Last-Modified这一项,而request中是没有If-Modified-Since的
当我们第二次请求时,浏览器会根据接收到的Last-Modified来发送If-Modified-Since信息,然后服务端会根据这个时间来和比对从而判断是否过期