Web缓存
Web缓存器也叫代理服务器,有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象的副本。可以配置用户的浏览器,使得用户的所有HTTP请求首先被定向到该Web缓存器。被配置的用户浏览器请求对象时,会发生以下情况:
1.浏览器创建一个到Web缓存器的TCP连接,并向Web缓存器中的对象发送一个HTTP请求
2.Web缓存器进行检查,看看本地是否存储了该对象副本。如果有,Web缓存器就向客户浏览器用HTTP响应报文返回该对象
3.如果Web缓存器中没有该对象,就打开一个与该对象的初始服务器的TCP连接。Web缓存器则在这个缓存器到服务器的TCP连接上发送该对象的HTTP请求,在收到请求后,初始服务器向该Web缓存器发送具有该对象HTTP响应
4.当Web缓存器收到该对象时,在本地存储空间存储一份副本,并向客户的浏览器用HTTP响应报文发送该副本
使用web缓存器能够降低机构接入链路上的流量强度,可在不提高接入链路速率的前提下,降低机构局域网内用户请求资源的响应时间
条件GET方法
尽管高速缓存能减少用户感受到的响应时间,但由于放在web缓存器中的副本可能是旧的版本,HTTP协议提供一种条件GET方法,允许缓存器证实它的对象是最新的。
条件GET方法:
- 请求报文使用GET方法
- 请求报文中包含一个“If-Modified-Since:”首部行
使用条件GET方法过程如下:
1.首先Web缓存器向某Web服务器发送请求报文
2.某Web服务器向该缓存器发送具有被请求对象的响应报文,其中含有”Last-Modified:“首部行,表示该对象最后被修改的时间
3.Web缓存器收到该响应报文后,将该对象转发给请求的浏览器的同时,也在本地缓存了该对象,在存储该对象的同时也储存了最后修改时间
4.下一次,比如一个星期后,当用户浏览器再次请求该对象时,Web缓存器向之前的Web服务器发送带有"If-Modified-Since:"首部行的GET方法请求报文,其中首部行的参数是前一次储存的最后修改时间
5.服务器收到Web缓存器的请求报文后,当且仅当对象在指定日期之后被修改过才发送该对象,若未修改过,则发送不含有对象的响应报文,状态行中为304 Not Modified告诉Web缓存器可以使用原来的对象