可缓存的动态页面设计

王朝php·作者佚名  2005-05-16
窄屏简体版  字體: |||超大  

什么样的页面能够比较好的被缓存服务器缓存呢?如果返回内容的HTTP HEADER中有"Last-Modified"和"Expires"相关声明,比如:

Last-Modified: Wed, 14 May 2003 13:06:17 GMT

Expires: Fri, 16 Jun 2003 13:06:17 GMT

前端缓存服务器在期间会将生成的页面缓存在本地:硬盘或者内存中,直至上述页面过期。

因此,一个可缓存的页面:

页面必须包含Last-Modified: 标记

一般纯静态页面本身都会有Last-Modified信息,动态页面需要通过函数强制加上,比如在PHP中:

// always modified now

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

必须有Expires或Cache-Control: max-age标记设置页面的过期时间:

对于静态页面,通过apache的mod_expires根据页面的MIME类型设置缓存周期:比如图片缺省是1个月,HTML页面缺省是2天等。

<IfModule mod_expires.c>

ExpiresActive on

ExpiresByType image/gif "access plus 1 month"

ExpiresByType text/css "now plus 2 day"

ExpiresDefault "now plus 1 day"

</IfModule>

对于动态页面,则可以直接通过写入HTTP返回的头信息,比如对于新闻首页index.php可以是20分钟,而对于具体的一条新闻页面可能是1天后过期。比如:在php中加入了1个月后过期:

// Expires one month later

header("Expires: " .gmdate ("D, d M Y H:i:s", time() + 3600 * 24 * 30). " GMT");

如果服务器端有基于HTTP的认证,必须有Cache-Control: public标记

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航