php 浏览器 缓存,php设置浏览器缓存机制及缓存时间

在用户浏览blog的不同页面时,很多内容是重复的,比如相同的javascript,css,背景图片等。如果我们能够建议甚至强制浏览器在本地缓存这些文件,将大大降低页面产生的流量,从而降低页面载入时间。

根据服务器端的响应header(怎么看HTTP Header),一个文件对浏览器而言,有几级不同的缓存状态。

服务器端告诉浏览器不要缓存此文件,每次都到服务器上更新文件。

服务器端没有给浏览器任何指示(此时我也不知道这时候浏览器将会怎么做),这种情况多为动态脚本(比如PHP)产生的文件。

上次传输中,服务器给浏览器发送了Last-Modified或Etag数据,再次浏览时浏览器将提交这些数据到服务器,验证本地版本是否最新的,如果为

最新的则服务器返回304代码,告诉浏览器直接使用本地版本,否则下载新版本。一般来说,有且只有静态文件,服务器端才会给出这些数据。

服务器强制要求浏览器缓存文件,并设置了过期时间。在缓存未到期之前,浏览器将直接使用本地缓存文件,不会与服务器端产生任何通信。

我们要做的是尽量强制浏览器到第四种状态,特别是对于javascript, css和图片等变动较少的文件。

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

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分钟。如果该模块没有安装,也不会出错。

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

在这里有mod_expires更详细的文档和教程。不过我要说明的是,mod_expires在绝大多数服务器上都没安装  ,因为虽然这个模块包含在Apache的发行版里,但并不是默认安装模块。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值