缓存相关的请求头
- Last-Modified
- Expires
- Cache-Control
- ETag
区别与联系
-
Last-Modified
一般存在于静态服务器的HTTP响应头中,由web服务器自动添加
当客户端得到这个响应头,在下次向服务端发起请求的时候,就把Last-Modified头所带的更改时间加到If-Modified-Since头中,发给服务端。服务端收到If-Modified-Since标记,就判断在此时间后文件内容有无发生变化,若无变化,响应 304 Not Modified 。这样做的好处是,节省了网络的传输,因为请求和响应中都没有携带消息体。
Expires 使用绝对时间来标记缓存过期的时间(HTTP1.0),如果本地时间和服务器时间不同步,就会影响到缓存服务器的工作,故在HTTP1.1推出了Cache-control。
-
Cache-Control有多种用法:
- Cache-Control: max-age=3600, public
- 指定缓存过期的相对时间(秒数),public允许任何人(浏览器,缓存服务器,代理服务器)缓存
- Cache-Control: no-cache
- 不缓存
- Cache-Control: max-age=3600, public
-
ETag
- 与Last-Modified类似,但是是用一串跟内容相关的编码来标记,如
ETag: “74177-b46585209c1bc0”
-
浏览器会在下次请求时,通过类似最后修改时间的方法,在HTTP请求头中附加以下内容来询问服务器该内容是否发生变化:
If-None-Match: “74177-b46585209c1bc0”