正如你看到的:你可以手工创建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对象的属性;

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

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

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

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

  Response.Cache.SetCacheability ( HttpCacheability.Public ) ;

  关于本文档

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

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

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

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

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

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

  版本: 1.81 - 2007年3月16日

  创作共用版权声明

  翻译: 车东 2007年9月6日