缓存系统如何为网站工作

时间:2012-11-30 07:53:11

标签: php caching browser-cache cache-control

我已经搜索了缓存主题,我最终在以下

<meta http-equiv="Cache-control" content="description">

描述

Public - may be cached in public shared caches
Private - may only be cached in private cache
no-Cache - may not be cached
no-Store - may be cached but not archived

他们究竟是什么意思

1.公共共享缓存意味着文件将从代理缓存和网关缓存中下载

2.私有缓存是指存储在客户端系统中的浏览器缓存或缓存中引用的文件

3.当描述设置为no-Cache时,它将从Web服务器加载新版本。每次加载页面时都会下载新文件。

4.当他们说没有存档时,他们真正的意思是什么。

请简要说明缓存是如何工作的,而不是解释每个人都可以访问的公共方法,私人意味着有限访问。

1 个答案:

答案 0 :(得分:1)

来自http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1

  

14.9.1什么是可缓存

     

默认情况下,如果请求的要求,则可以缓存响应   方法,请求标头字段和响应状态表明   它是可缓存的。第13.4节总结了这些默认值   高速缓存能力。以下Cache-Control响应指令允许   原始服务器覆盖响应的默认可缓存性:

     

公开

     

表示任何缓存都可以缓存响应,即使它通常是非缓存的,也可以只在非共享内缓存   缓存。 (有关其他详细信息,请参阅授权,第14.8节。)

     

<强>私有

     

表示全部或部分响应消息仅供单个用户使用,不得由共享缓存缓存。这允许一个   原始服务器指出该指定的部分       响应仅适用于一个用户,并且不是其他用户请求的有效响应。私有(非共享)缓存可以   缓存响应。

     

注意:这个单词private的用法仅控制可以缓存响应的位置,并且无法确保消息的隐私性   内容。无缓存

     

如果no-cache指令没有指定字段名,那么缓存绝不能使用响应来满足后续请求   没有使用原始服务器成功重新验证。这允许一个   原始服务器,以防止缓存,即使是已经存在的缓存   配置为返回客户端请求的陈旧响应。

     

如果no-cache指令确实指定了一个或多个字段名,那么缓存可以使用该响应来满足后续请求,   受缓存的任何其他限制。但是,指定的   字段名称不得在对后续请求的响应中发送   没有使用原始服务器成功重新验证。这允许一个   源服务器,以防止重新使用某些头字段   响应,同时仍然允许缓存其余的响应。

     

注意:大多数HTTP / 1.0缓存都无法识别或遵守此指令。

     

14.9.2缓存可以存储的内容

     

否店内

     

无商店指令的目的是防止无意释放或保留敏感信息(for   例如,在备份磁带上)。 no-store指令适用于   整个消息,可以在回复或请求中发送。

     

如果在请求中发送,则缓存不得存储其中任何一部分   请求或任何回复。如果在响应中发送,则缓存不得   存储此响应的任何部分或引发的请求   它。该指令适用于非共享和共享缓存。   在这种情况下“绝不能存储”意味着缓存不得   故意将信息存储在非易失性存储器中,并且必须   尽最大努力尝试从volatile中删除信息   转发后尽快存储。

     

即使此指令与响应相关联,用户也可以在缓存系统之外明确存储此类响应   (例如,使用“另存为”对话框)。历史缓冲区可以存储此类   回应是他们正常运作的一部分。

     

该指令的目的是满足关注的某些用户和服务作者的规定要求   通过意外访问缓存意外释放信息   数据结构。虽然使用此指令可能会改善隐私   在某些情况下,我们提醒它,它绝不是可靠的或   确保隐私的充分机制。特别是恶意或   受损的缓存可能无法识别或遵守此指令,并且   通信网络可能容易被窃听。