php header()函数设置页面Cache缓存
发布:smiling 来源: PHP粉丝网 添加日期:2014-01-06 23:38:43 浏览: 评论:0
header()函数在php的使用很大,下面我来介绍利用它实现页面缓存的一些方法,但使用header前必须注意,在它之前不能任何输出,包括空格。
手册上,我们对于cache都是写着如何设置,以便让代码不被cache,代码如下:
- header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); // HTTP/1.1
- header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
- header("Pragma: no-cache"); // Date in the past
而且在设置的时候还得注意在header前不能有输出,否则header设置无效,但都没有写过,如何给页面设置Cache,虽然我们知道有一些办法,比如 E-TAG之类的,当然也有简单的设置,比如我们在输出前,对内容进行md5,将它当成e-tag只要没变化,就不会有影响.也有其他的方式,代码如下:
- $seconds_to_cache = 3600;
- $ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT";
- header("Expires: $ts"); header("Pragma: cache");
- header("Cache-Control: max-age=$seconds_to_cache");
缓存1小时,主要是过期时间得用gmdate来设置,而不是date,这个要注意,其他都差不多。maxage要和expire能够对得上。
对于PHP产生的动态内容,只需要在内容输出之前输出强制缓存的header即可,比如下面的代码即要求浏览器缓存文件1个月,代码如下:
- <?php
- header("Cache-Control: public");
- header("Pragma: cache");
- $offset = 30*60*60*24; // cache 1 month
- $ExpStr = "Expires: ".gmdate("D, d M Y H:i:s", time() + $offset)." GMT";
- header($ExpStr);
- ?>
对于静态文件,一般的服务器都支持第3级缓存状态。要想达到第四级的缓存效果,要么像之前GZIP压缩那样,用PHP外包一层,然后用PHP处理。要么需要服务器端的支持,APACHE的一个模块mod_expires支持给文件添加expires header。把下面的代码加入你的blog目录下的.htaccess文件,如果你的服务器安装了mod_expires模块,则将自动生效,图片等强制缓存一个月,html文档缓存10分钟。如果该模块没有安装,也不会出错,代码如下:
- <IfModule mod_expires.c>
- ExpiresActive On
- ExpiresByType image/gif A2592000
- ExpiresByType image/jpeg A2592000
- ExpiresByType image/png A2592000
- ExpiresByType application/x-shockwave-flash A2592000
- ExpiresByType text/css A2592000
- ExpiresByType application/x-javascript A2592000
- ExpiresByType text/html A600
- </IfModule>
在这里有mod_expires更详细的文档和教程。不过我要说明的是,mod_expires在绝大多数服务器上都没安装.
Tags: header 函数 Cache缓存
相关文章
- ·php curl 分离header和body信息(2014-01-07)
- ·php header实现不传权重的网址跳转(2014-06-10)
- ·php Header函数实现下载短点续传程序(2014-08-28)
- ·php检测文件类型,根据文件header信息(2014-09-09)
- ·php 用header()读写csv文件方法(2014-09-11)
- ·php 常用header常用例子(2018-09-16)
- ·CURL HTTP构造请求Header实现伪造来源IP的说明(2018-09-21)
- ·解决”Cannot modify header information(2018-10-24)
- ·php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证(2019-08-12)
- ·php使用curl获取header检测开启GZip压缩的方法(2021-10-23)
- ·php json_encode()函数中文编码乱码解决方法(2014-01-16)
- ·php中pcntl_alarm为函数设置超时限制(2014-02-11)
- ·php利用CURL函数登入163邮箱并获取自己的通讯录(2014-06-17)
- ·php实现a到z及其中的”奇怪现象”(2014-06-21)
- ·php自定义加密函数、解密的例子(2014-06-28)
- ·关闭php执行系统指令函数(2014-08-22)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)