Last-Modified & If-Modified-Since
在http中,Last-Modified 与 If-Modified-Since 都是用于记录页面最后修改时间的 HTTP 头信息,注意 Last-Modified 是由服务器往客户端发送的 HTTP 头,另一个 If-Modified-Since是由客户端往服务器发送的头,可以看到,再次请求本地存在的 cache 页面时,客户端会通过 If-Modified-Since 头将先前服务器端发过来的 Last-Modified 最后修改时间戳发送回去,这是为了让服务器端进行验证,通过这个时间戳判断客户端的页面是否是最新的,如果不是最新的,则返回新的内容,如果是最新的,则返回 304 告诉客户端其本地 cache 的页面是最新的,于是客户端就可以直接从本地加载页面了,这样在网络上传输的数据就会大大减少,同时也减轻了服务器的负担。而且在一些ajax应用中,要求获取的数据永远是最新的,而不是读取位于缓存中的数据,做这样的设置是非常有必要的。
request headers
GET /download?path=test-upload-myfile.txt HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Cookie: JSESSIONID=64969EE0ED8340B46396F816D665DD23
If-Modified-Since: Wed, 01 Apr 2015 06:43:56 GMT
response headers
HTTP/1.1 200 OK
content-length: 449
content-type: application/octet-stream
date: Wed, 01 Apr 2015 10:20:32 GMT
expires: Wed, 01 Apr 2015 10:21:32 GMT
cache-control: private, max-age=60
last-modified: Wed, 01 Apr 2015 06:43:56 GMT
connection: keep-alive
If-Modified-Since: Wed, 01 Apr 2015 06:43:56 GMT 是说从这个时间开始,所请求的实体如果被修改,就返回请求的实体;否则,就不返回。
last-modified: Wed, 01 Apr 2015 06:43:56 GMT 是说所请求的实体的最后修改时间。
http关于时间的首部的时间日期格式:如Date首部,表示报文的创建时间和日期,
时间的描述格式由rfc822定义。例如,Date: Mon, 04 Jul 2011 05:53:36 GMT
HTTP_DATE_FORMAT = "EEE, dd MMM yyyy HH:mm:ss zzz"
关于时间日期格式请看:http://my.oschina.net/xinxingegeya/blog/394821
===========END===========