大多数的网页包括诸如CSS文件,图像文件,JavaScript文件等资源,改变很少。这些资源需要一段时间才能通过网络下载,这增加了花费的时间来加载网页。HTTP缓存使这些资源得以保存,或通过浏览器缓存或代理。一旦资源被缓存,浏览器或代理可以参考本地缓存的副本,而无需下载到网页以后访问一遍。因此,缓存是一种双赢:你减少 往返时间 ,消除众多的HTTP请求所需的资源,并大大降低了你的反应总有效载荷的大小。除了 导致在随后的页面加载时间大幅降低用户访问,使缓存还可以显着降低带宽和托管费用为您的网站。 设定到期日或静态资源的HTTP头的最高年龄指示浏览器加载,而不是通过网络本地磁盘先前下载的资源。 HTTP / S支持本地浏览器的静态资源缓存。最新的浏览器的一些(如IE 7,镀铬)使用启发式决定多久缓存中的所有资源,没有明确的缓存头。其他较旧的浏览器可能会要求设置缓存头,才会从缓存中获取资源,有的可能永远不会缓存通过SSL发送的任何资源。 要利用在所有浏览器的缓存一致的全部好处,我们建议您配置Web服务器显式设置缓存头,并将其应用到所有 可缓存静态资源,不只是一小部分(如图像)。可高速缓存的资源包括JS和CSS文件,图像文件和其它二进制目标文件(媒体文件,PDF,Flash文件,等等)。一般来说,HTML不是一成不变的,而不应被视为缓存。 HTTP/1.1提供了以下缓存响应头: 重要的是要指定一个 如果你知道什么时候资源都不会改变,设置较短的到期是好的。但如果你认为它“可能会很快改变”,但不知道什么时候,你应该设置一个长URL过期和使用指纹(如下所述)。设置缓存积极不“污染”浏览器缓存:据我们所知,所有的浏览器清除其高速缓存根据最近最少使用的算法,我们不是任何浏览器,等待他们的资源清除前到期知道。 对于用来显示用户的登录后日历样式,谷歌日历嵌入在其文件名 的指纹:日历/静态/ fingerprint_key doozercompiled.css,其中指纹密钥是一个128位的十六进制数。在屏幕的下方拍摄时间(从网页速度的拍摄显示资源面板),指纹被设置为82b6bc440914c01297b99b4bca641a5d: 该指纹识别机制允许服务器设置 在启用静态资源的公共HTTP标头缓存允许浏览器下载从附近的代理服务器资源从远程服务器,而不是产地。 除了浏览器缓存,HTTP提供了代理缓存,使静态的资源,在公共网络代理服务器,尤其是通过互联网服务供应商所使用的缓存。这意味着,即使是第一次到您的网站用户可以受益于缓存:一旦静态资源已被要求通过一个代理用户,该资源为所有的请求通过代理去同其他用户使用。由于这些地点可能在附近比你更接近网络服务器的用户,代理缓存可能导致网络延迟显着减少。另外,如果启用代理缓存有效地为您提供免费网站托管,因为从代理缓存服务响应不上你的服务器的带宽得出的。 您可以使用利用浏览器缓存
概述
详情
过期
和缓存控制:最大年龄
。这些指定的资源“保鲜寿命”,也就是在这一段时间内可以使用的浏览器不检查,看看是否有新的版本是从Web服务器上可用的缓存资源。他们是“强缓存头”适用于无条件的,也就是说,一旦它们设置和资源下载,浏览器不会发出任何对资源的GET请求,直到到期日或最高年龄达到。上次修改
和ETag的
。这些指定一些关于资源的特点,浏览器检查,以确定该文件是相同的。在最后修饰
头,这始终是一个日期。在ETag的
头,这可以是任何值,唯一标识一个资源(文件版本或内容哈希典型值)。上次修改
是一个“弱”在缓存头,浏览器应用了启发式,以确定是否需要获取该项目从缓存与否。(之间的启发式是不同的浏览器不同。)然而,这些头让浏览器能够有效地更新发行条件GET请求时,用户明确地重新加载页面的缓存资源。有条件的GETs不返回资源的充分反应,除非在服务器上发生了变化,因而具有较低的延迟比完全得到。过期
或缓存控制最大年龄
, 和一个最后修饰
或ETag的
所有缓存资源。它是多余的同时指定过期
和缓存控制:最大年龄
,或同时指定上次修改
和ETag的
。 建议
过期
至一个月最低,最好长达一年,在未来的。(我们喜欢过期
超过缓存控制:最大年龄
,因为它是更广泛的支持)不要将它在未来一年多,因为这违反了RFC准则。上次修改
日期,最后一次资源被改变。如果 上次修改
日期是远远不够充分,在过去,很可能是浏览器不会重新提取它。因人而异
头和任何领域,但接受编码
和用户代理
。为了确保这些资源被IE缓存,一定要剥离出Vary头从任何其他领域,或删除Vary头完全可能的话高速缓存控制:公共
指令,启用HTTPS的Firefox缓存。高速缓存控制:公共
头是在通过SSL发送给在磁盘上缓存资源的顺序设置,即使其他缓存头显式设置。虽然这头通常用于启用(如下所述)代理服务器的高速缓存,代理服务器无法缓存通过HTTPS发送的任何内容,因此它始终是安全设置此为HTTPS资源头。示例
过期
头正好提前一年的申请之日起,在上次修改
的日期标头文件的最后修改;和缓存控制:最大年龄
头3153600。为了使客户端重新下载文件的情况下它的到期日或之前最高年龄的变化,指纹(因此URL)的变化时该文件的内容一样。其他资源
利用代理缓存
概述
详情
高速缓存控制:公共
头,表示一个资源可以通过公共网络代理缓存,除了浏览器发出的请求。除了 某些例外(如下所述),你应该配置Web服务器来设置这个头以公众
为可缓存的资源。建议
缓存控制:公共
头在响应中。为了使这些资源代理缓存,删除静态资源引用查询字符串,而不是编码到文件名 称本身的参数。缓存控制
头私人
或为这些资源 从Cookie的域。内容编码
响应头。这可能会导致传递到客户端浏览器无法正常解压缩文件的压缩版本。由于这些文件应始终 gzip压缩 您的服务器,以确保客户能够正确读取文件,执行下列操作之一:缓存控制
标头私人
。这将禁用代理缓存总共为这些资源。如果您的应用程序是多宿主业务遍布全球,依靠当地代理缓存用户较少,这可能是一个适当的设置。各不相同:接受编码
响应头。这将指示代理缓存两个版本的资源:一是压缩,和一个压缩。资源的正确版本提供基于客户请求头。这是一个是单穴和依靠当地公众用户代理应用的理想选择。