《HTTP权威指南》读书笔记---缓存

概述

  Web缓存可以自动保存常见文档副本的HTTP设备。当Web请求抵达缓存时,如果本地有“已缓存的”副本,就从本地存储设备而不是原始服务器中提取这个文档。

使用缓存的优点

  1. 减少了冗余的数据传输
  2. 缓解了网络的瓶颈的问题(不许更多的的带宽就能更快加载)
  3. 降低了对原始服务器的要求
  4. 降低了距离时延

如何做到

  1.多名用户访问原始服务器页面时,服务器会多次传输同一份文档,相同的字节会在网络中一遍遍地传输。有了缓存,就可以保留第一条服务器响应的副本,后继请求就可以由缓存的副本来应对了。
  2.因为缓存放在了离计算机较近的地方,客户端可以很快得到一份副本

“命中和未命中”

  缓存命中(cache hit):可以用已有的副本为某些到达缓存的请求提供服务。
  缓存未命中(cache miss):没有副本可用,而被转发到原始服务器。

     再验证

  原始服务器的内容可能会发生变化,缓存要不时的对其进行检测,看看保存的副本是否为最新的。“新鲜度检测”被称为HTTP再验证(revalidation)。为了有效的验证,HTTP蒂尼饿一些特殊的请求,不要用从服务器获取整个对象,就可以快速检测出内容是否为最新。
  由于缓存中通常会包含数百万文档,而且网络宽带比较珍贵,所以大部分缓存只有客户端发起请求,并且副本旧的足以需要检测时,才会再验证。
  缓存再验证时,会向服务器发送一个小的再验证请求。若缓存仍然有效,副本就会被标志成是新鲜的,并将副本提供给客户端,这称为再验证命中(revalidate hit)。通常会用If-Modified-Since首部来验证,把它添加到GET请求中去,就可以告诉服务器。下面数响应报文中可能出现的三种情况
  • 再验证命中
如果服务器对象未被修改,服务器会向客户端发送一个小的HTTP 304 Not Modified响应
  • 再验证未命中
如果服务器对象与已缓存副本不同,服务器向客户端发送一条普通的,带有完整内容的HTTP 200 OK响应
  • 对象被删除
如果服务器对象已经被删除了,服务器就会送一个 404 Not Found响应,缓存也会将其副本删除

     区分命中和未命中的情况

  HTTP没有为用户提供一种手段来区分响应是缓存命中的,还是访问原始服务器得到的。这两种情况返回的都是200 OK
  客户端有一种方法能判断响应是否来自缓存,就是使用Date首部。将响应中Date首部的值与当前时间进行比较,如果响应中的日期值比较早,客户端通常就可以认为是来自缓存的;反之,则认为是来自原始服务器中的。

两种缓存

  私有缓存

Web浏览器中有内建的私有缓存,大多数浏览器会将常用文档缓存在你个人电脑的磁盘和内存中,并且允许用户去配置缓存的大小和各种设置。
      私有缓存不需要很大的动力或存储空间。

  共有代理缓存

共有代理缓存是特殊的共享代理服务器,被称为缓存代理服务器(caching proxy server),或称为代理缓存(proxy cache)。代理缓存会从本地缓存中提取文档,或者代表用户与服务器进行联系。公有缓存会接受来自多个用户的访问,所以通过他可以更好地减少冗余流量。

缓存的处理步骤

对一条HTTP GET报文的基本缓存处理过程包括7个步骤
  1. 接受——缓存从网络中读取抵达的请求报文。
  2. 解析——缓存对报文进行解析,提取出URL和各种首部。
  3. 查询——缓存查看是否有本地副本可用,如果没有,就获取一份副本并保存在本地。
  4. 新鲜度检测——缓存查看已缓存副本是否足够新鲜,如果不是,就询问服务器是否有任何更新。
  5. 创建响应——缓存会用新的首部和已缓存的主体来构建一条响应报文。
  6. 发送——缓存通过网络将响应发回给客户端。
  7. 日志——缓存可选地创建一个日志文件条目来描述这个事务。

文档过期

通过特殊的HTTP Cache-Control和Expires首部,HTTP让原始服务器向每个文档附加一个“过期日期”。
Expires:Fri, 05, Jan 2012, 01:31:39 GMT
Cache-Control: max-age=439293

  Expires与Cache-Control

Expries:指定一个绝对过期日期。如果过期日期已经过了,就说明文档不再新鲜了。
     Cache-Control:max-age:max-age值定义了文档的最大使用期——从第一次生成文档到文档不再新鲜,无法使用为止,最大的合法生存时间(以秒为单位)。 




  • 22
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值