下面以百度为例简单介绍客户端访问过程中C/S的交互过程。


页面缓存时间及HTTP头总结_页面缓存

客户端请求:
1、Request-Line请求行是GET请求,采用的是HTTP/1.1,(详情百度HTTP/1.1和HTTP/1.0的区别)
2、Host请求主机是www.baidu.com
3、User-Agent请求端的浏览器是火狐浏览器
4、Accept接受类型是html,支持application / xhtml+ xml的应用程序
5、Accept-Language接受语言中文
6、Accept-Encoding接受编码gzip,deflate
7、保持连接

服务器应答:
1、Status-Line状态行是应答HTTP/1.1
2、Date日期 2012年12月9日12时58分05秒GMT
3、Server服务器软件及版本号BWS/1.0
4、Content-Length响应中数据的字节长度4015
5、Content-Type响应中数据的类型html,字符编码gbk
6、Cache-Control网页的缓存是由HTTP消息头中的“Cache-control”来控制的(详情见下方)
7、Expires到期时间 2012年12月9日12时58分05秒GMT
8、Content-Encoding 内容编码gzip
9、Set-Cookie Web服务器通过传送HTTP 包头中的Set-Cookie 消息把一个cookie 发送到用户的浏览器中。
10、P3P 一种可以提供这种个人隐私保护策略,并且正在被越来越多的技术人员接受的新技术。
11、保持连接

Cache-Control:
网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况:
(1) 打开新窗口  如果指定cache-control的值为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临时文章夹留下页面备份。   另外,通过指定“Expires”值也会影响到缓存。例如,指定Expires值为一个早已过去的时间,那么访问此网时若重复在地址栏按回车,那么每次都会重复访问:   Expires: Fri, 31 Dec 1999 16:00:00 GMT   在ASP中,可以通过Response对象的Expires、ExpiresAbsolute属性控制Expires值;通过Response对象的CacheControl属性控制Cache-control的值,例如:   Response.ExpiresAbsolute = #2000-1-1# ' 指定绝对的过期时间,这个时间用的是服务器当地时间,会被自动转换为GMT时间   Response.Expires = 20 ' 指定相对的过期时间,以分钟为单位,表示从当前时间起过多少分钟过期。   Response.CacheControl = "no-cache"   Expires值是可以通过在Internet临时文件夹中查看临时文件的属性看到的




页面缓存时间及HTTP头总结_http协议头_02

和上图区别:
1、在这张图上注意一下请求端多了一个cookie,那就是上面刚才讲到的服务器通过传送HTTP 包头中的Set-Cookie 消息把一个cookie 发送到用户的浏览器中。
2、refener(标明产生请求的初始资源)
3、服务器软件是Apache
3、多了最后修改日期Last-Modified
4、etag(服务器向客户端分派一个唯一的标识符)
5、到期时间变得很长,内容类型是图片。而上图时间很短,内容是文本。


交流群:374506612