面向网站管理员的Web缓存加速指南(6)

发表于:2013-01-18来源:IT博客大学习作者:不详点击数: 标签:Web缓存
记住: Header()的输出必须先于所有其他HTML的输出; 正如你看到的:你可以手工创建HTTP日期;PHP没有为你提供专门的函数(新版本已经让这个越来越容易了,请

  记住: Header()的输出必须先于所有其他HTML的输出;

  正如你看到的:你可以手工创建HTTP日期;PHP没有为你提供专门的函数(新版本已经让这个越来越容易了,请参考PHP的日期相关函数文档),当然,最简单的还是设置Cache-Control: max-age头信息,而且对于大部分情况都比较适用;

  更多信息,请参考header相关的文档;

  也请参考一下cgi_buffer库,自动处理ETag的生成和校验,Content-Length生成和内容的gzip压缩,PHP脚本只需包含1行代码;

  Cold Fusion

  Cold Fusion是Macromedia的商业服务器端脚本引擎,并且支持多种Windows平台,Linux平台和多种Unix平台。Cold Fusion通过CFHEADER标记设置HTTP头信息相对容易。可惜的是:以下的Expires头信息的设置有些容易误导;

  

  它并不像你想像的那样工作,因为时间(本例中为请求发起的时间)并不会被转换成一个符合HTTP时间,而且打印出副本的Cold fusion的日期/时间对象,大部分客户端会忽略或者将其转换成1970年1月1日。

  但是:Cold Fusion另外提供了一套日期格式化函数, GetHttpTimeSTring. 结合DateAdd函数,就很容易设置过期时间了,这里我们设置一个Header声明副本在1个月以后过期;

  

  你也可以使用CFHEADER标签来设置Cache-Control: max-age等其他头信息;

  记住:Web服务器也会将头信息设置转给Cold Fusion(做为CGI运行的时候),检查你的服务器设置并确定你是否可以利用服务器设置代替Cold Fusion。

  ASP和ASP.NET

  在asp中设置HTTP头信息是:确认Response方法先于HTML内容输出前被调用,或者使用 Response.Buffer暂存输出;同样的:注意某些版本的IIS缺省设置会输出Cache-Control: private 头信息,必须声明成public才能被共享缓存服务器缓存。

  IIS的ASP和其他web服务器都允许你设置HTTP头信息,例如: 设置过期时间,你可以设置Response对象的属性;

  <% Response.Expires=1440 %>

  设置请求的副本在输出的指定分钟后过期,类似的:也可以设置绝对的过期时间(确认你的HTTP日期格式正确)

  <% Response.ExpiresAbsolute=#May 31,1996 13:30:15 GMT# %>

  Cache-Control头信息可以这样设置:

  <% Response.CacheControl="public" %>

  在ASP.NET中,Response.Expires 已经不推荐使用了,正确的方法是通过Response.Cache设置Cache相关的头信息;

  Response.Cache.SetExpires ( DateTime.Now.AddMinutes ( 60 ) ) ;

  Response.Cache.SetCacheability ( HttpCacheability.Public ) ;

  参考MSDN文档可以找到更多相关新年系;

  参考文档和深入阅读

  HTTP 1.1 规范定义

  HTTP 1.1的规范有大量的扩展用于页面缓存,以及权威的接口实现指南,参考章节:13, 14.9, 14.21, 以及 14.25.

  Web-Caching.com

  非常精彩的介绍缓存相关概念,并介绍其他在线资源。

  关于非连续性访问统计

  Jeff Goldberg内容丰富的演说告诉你为什么不应该过度依赖访问统计和计数器;

  可缓存性检测引擎

  可缓存的引擎设计,检测网页并确定其如何与Web缓存服务器交互, 这个引擎配合这篇指南是一个很好的调试工具,

  cgi_buffer库

  包含库:用于CGI模式运行的Perl/Python/PHP脚本,自动处理ETag生成/校验,Content-Length生成和内容压缩。正确地。 Python版本也被用作其他大量的CGI脚本。

  关于本文档

  本文版权属于Mark Nottingham ,本作品遵循创作共用版权。

  如果你镜像本文,请通过以上邮件告知,这样你可以在更新时被通知;

  所有的商标属于其所有人。

  虽然作者确信内容在发布时的正确性,但不保证其应用或引申应用的正确性,如有误传,错误或其他需要澄清的问题请尽快告知作者;

  本文最新版本可以从 http://www.mnot.net/cache_docs/ 获得;

  翻译版本包括: 捷克语版,法语版和中文版。

  版本: 1.81 - 2007年3月16日

  创作共用版权声明

  翻译: 车东 2007年9月6日

原文转自: http://www.mnot.net/cache_docs/