理解HTTP headers之Expires、Cache-Control、IF-Modified-Since

来源:互联网 发布:2016最新人口普查数据 编辑:程序博客网 时间:2024/06/06 14:19

一、什么是Http headers?

当你在浏览器地址栏里键入一个url,你的浏览器将会类似如下的http请求:
GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120
Pragma: no-cache
Cache-Control: no-cache

第一行被称为“Request Line” 它描述的是这个请求的基本信息,剩下的就是HTTP headers了。

HTTP Headers是HTTP请求和相应的核心,它承载了关于客户端浏览器,请求页面,服务器等相关的信息

二、Expires、Cache-Control、IF-Modified-Since

 1、概念:Expires是RFC 2616(HTTP/1.0)协议中和网页缓存相关字段。用来控制缓存的失效日期,要注意的是,HTTP/1.0有一个功能比较弱的缓存控制机制:Pragma,使用HTTP/1.0的缓存将忽略Expires和Cache-Control头。

2、网页的缓存是由http消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况:

(1) 打开新窗口

值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。

而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如:

Cache-control: max-age=5(表示当访问此网页后的5秒 内再次访问不会去服务器)

(2) 在地址栏回车

值为private或must-revalidate则只有第一次访问时会访问服务器,以后就不再访问。

值为no-cache,那么每次都会访问。

值为max-age,则在过期之前不会重复访问。

(3) 按后退按扭

值为private、must-revalidate、max-age,则不会重访问,

值为no-cache,则每次都重复访问

(4) 按刷新按扭


无论为何值,都会重复访问

Cache-control值为“no-cache”时,访问此页面不会在Internet临时文章夹留下页面备份。

三、应用

  通过HTTP的META设置expires和cache-control

<meta http-equiv="Cache-Control" content="max-age=7200" />

<meta http-equiv="Expires" content="Mon, 20 Jul 2009 23:00:00 GMT" />

上述设置仅为举例,实际使用其一即可。这样写的话仅对该网页有效,对网页中的图片或其他请求无效,并不会做任何cache。

     

 

0 0
原创粉丝点击