http-headers头

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http-headers头相关的知识,希望对你有一定的参考价值。

Last-Modified 是什么
Last-Modified 是 HttpHeader 中的资源的最后修改时间,如果带有 Last-Modified ,下一次发送 Http 请求时,将会发生带 If-modified-since 的 HttpHeader 。如果没有过期,将会收到 304 的响应,从缓存中读取。
Etag 是什么
Etag 是 HttpHeader 中代表资源的标签,在服务器端生成。如果带有 Etag ,下一次发送带 Etag 的请求,如果Etag 没有变化将收到 304 的响应,从缓存中读取。
Etag 在使用时要注意相同资源多台 Web 服务器的 Etag 的一致性。

Expire 是什么
Expire 是 HttpHeader 中代表资源的过期时间,由服务器段设置。如果带有 Expire ,则在 Expire 过期前不会发生Http 请求,直接从缓存中读取。用户强制 F5 例外。

混合使用
Last-Modified,Etag,Expires 三个同时使用时。先判断 Expire ,然后发送 Http 请求,服务器先判断 last-modified,再判断 Etag ,必须都没有过期,才能返回 304 响应。

last-modified和etag区别
last-modified要比etag运行要快,因为每次请求都需要etag生成一个校验
Etag比lastModified更加严谨,如果资源发生变化,Etag就会发生变化,就会把最新的资源给客户端返回去,而lastModified不识别s(秒)单位里的修改,所以如果资源在s(秒)单位里发生了修改,那lastModified也不会发生改变,这样如果只用了lastModified,客户端得到的资源就不是最新的;但是设定了Etag之后,每次客户端发出请求,服务端都会根据资源重新生成一个Etag,对性能有影响
所以Etag是lastModifed的补充

Cache-control参数
值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。
而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如:
Cache-control: max-age=5(表示当访问此网页后的5秒内再次访问不会去服务器)

以上是关于http-headers头的主要内容,如果未能解决你的问题,请参考以下文章

如果单击超链接,使浏览器提交额外的 HTTP-Header

如何在 Wordpress 中插入 Last-Modified HTTP-header?

Rails 3 HTTP-header If-Modified-Since 使用 curl

PHP DomDocument - 自闭标签和特殊字符

netty系列之:在netty中处理CORS

为啥 curl 无法使用选项 -i 显示 http 标头