现代的商业化代理缓存相当的复杂。这些缓存构建的非常高效,可以支持HTTP和其他一些技术的各种高级特性。但除了一些微妙的细节之外,Web缓存的基本工作原理大多很简单。对一条HTTP GET报文的基本缓存处理过程包括7个步骤:
- 接收——缓存从网络中读取抵达的请求报文
- 解析——缓存对报文进行解析,提取URL和各种首部
- 查询——缓存查看是否有本地副本可用,如果没有,就获取一份副本(将其保存在本地)
- 新鲜度检测——缓存查看已缓存的副本是否足够新鲜,如果不是,就询问服务器是否有任何更新
- 创建响应——缓存会用新的首部和已缓存的主体来构建一条响应报文
- 发送——缓存通过网络将响应发回给客户端
- 日志——缓存可选的创建一个日志文件条目来描述这个事务
1. 接收
缓存检测到一条网络连接上的活动,读取输入数据。高性能的缓存会同时从多条输入连接上读取数据,在整条报文抵达之前开始对事务进行处理。
2. 解析
缓存将报文解析为片段,将首部的各个部分放入易于操作的数据结构中。这样缓存软件就更容易处理首部字段并修改他们了。
解析程序还要负责首部各部分的标准化,将大小写或者可替换数据格式之类不太重要的区别都看成等效的。
3. 查找
缓存获取URL后,查找本地副本。本地副本可能存储在内存,本地磁盘,甚至附近的另一台服务器中。专业级的缓存会使用快速算法来确定本地缓存中是否有某个对象。如果本地没有这个文档,他可以根据情形和配置,到原始服务器或父代理中去取,或者返回一条错误信息。
已缓存的对象中包含了服务器响应主体和原始服务器响应首部,这样就会在缓存命中时返回正确的服务器首部。已缓存的对象中还包含一些元数