php专区

 首页 > php专区 > PHP应用 > 常用功能 > php header()函数设置页面Cache缓存 - php高级应用

php header()函数设置页面Cache缓存 - php高级应用

分享到:
【字体:
导读:
          header()函数在php的使用很大,下面我来介绍利用它实现页面缓存的一些方法,但使用header前必须注意,在它之前不能任何输出,包括空格。手册上,...

php header()函数设置页面Cache缓存

header()函数在php的使用很大,下面我来介绍利用它实现页面缓存的一些方法,但使用header前必须注意,在它之前不能任何输出,包括空格。

手册上,我们对于cache都是写着如何设置,以便让代码不被cache,代码如下:

  1. header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); // HTTP/1.1 
  2. header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
  3. header("Pragma: no-cache"); // Date in the past 

而且在设置的时候还得注意在header前不能有输出,否则header设置无效,但都没有写过,如何给页面设置Cache,虽然我们知道有一些办法,比如 E-TAG之类的,当然也有简单的设置,比如我们在输出前,对内容进行md5,将它当成e-tag只要没变化,就不会有影响.也有其他的方式,代码如下:

  1. $seconds_to_cache = 3600;  
  2. $ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT";  
  3. header("Expires: $ts"); header("Pragma: cache");  
  4. header("Cache-Control: max-age=$seconds_to_cache"); 
缓存1小时,主要是过期时间得用gmdate来设置,而不是date,这个要注意,其他都差不多。maxage要和expire能够对得上。

对于PHP产生的动态内容,只需要在内容输出之前输出强制缓存的header即可,比如下面的代码即要求浏览器缓存文件1个月,代码如下:

  1.   header("Cache-Control: public"); 
  2.   header("Pragma: cache"); 
  3.   $offset = 30*60*60*24; // cache 1 month 
  4.   $ExpStr = "Expires: ".gmdate("D, d M Y H:i:s", time() + $offset)." GMT"
  5.   header($ExpStr); 
  6. ?> 

对于静态文件,一般的服务器都支持第3级缓存状态。要想达到第四级的缓存效果,要么像之前GZIP压缩那样,用PHP外包一层,然后用PHP处理。要么需要服务器端的支持,APACHE的一个模块mod_expires支持给文件添加expires header。把下面的代码加入你的blog目录下的.htaccess文件,如果你的服务器安装了mod_expires模块,则将自动生效,图片等强制缓存一个月,html文档缓存10分钟。如果该模块没有安装,也不会出错,代码如下:

  1.  
  2. ExpiresActive On 
  3. ExpiresByType image/gif A2592000 
  4. ExpiresByType image/jpeg A2592000 
  5. ExpiresByType image/png A2592000 
  6. ExpiresByType application/x-shockwave-flash A2592000 
  7. ExpiresByType text/css A2592000 
  8. ExpiresByType application/x-javascript A2592000 
  9. ExpiresByType text/html A600 
  10.  
在这里有mod_expires更详细的文档和教程。不过我要说明的是,mod_expires在绝大多数服务器上都没安装.
分享到:
php curl 伪造IP来源程序实现代码 - php...
php curl 伪造IP来源程序实现代码 今天没事做自己写了一个php curl 伪造IP来源程序实例程序,这里可以伪造IP来源,伪造域名,伪造用户信息. 定义伪造用户浏览器信息HTTP_USER_AGENT,代码如下: $binfo =array('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4...
PHP JSON数据处理实例程序用法 - php高级...
PHP JSON数据处理实例程序用法 在php中JSON数据处理最常用的就是直接使用json_encode()与json_decode()函数进行处理,就这两个json处理函数给各位同学详细介绍json在应用中的各种用法. json_encode(),PHP数据->JSON json_encode只有一个参数,参数除了resource 类型之外,可以为任何数据类型,...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……