用PHP控制用户浏览器缓存!
July/29th 2006
前段时间因为补课,所以好久没有发过日志了~ 你写的php程序是否高效?你是否会担心自己的程序太庞杂,执行速度很慢?你是否用过php动态生成图片? 其实每种浏览器都有缓存策略,会暂时将每一个浏览过的文件缓存在一个特殊的文件夹里。我们就可以在用户重复提交页面请求的时候,告诉用户这个页面没有改变,可以调用缓存。 那我们怎么知道用户有没有这个页面的缓存数据呢? 其实浏览器在发送请求的时候会先发送http头,一般象这样:
Date: Sun, 30 Jul 2006 09:18:11 GMT Content-Type: image/gif Last-Modified: Wed, 19 Jul 2006 07:40:06 GMT ETag: "8c55da8d6abc61:2327" Content-Length: 14757
其中Last-Modified: Wed, 19 Jul 2006 07:40:06 GMT ETag: "8c55da8d6abc61:2327"就是有关页面的缓存信息的。然后如果服务器返回的响应代码不是HTTP 200 (OK),而是 304的话,浏览器就会从缓存中读取数据。 根据这个原理,我写了一个函数,这个函数可以用在不经常更新或者需要经常刷新的页面,可以大大减轻服务器的负担,因为它如果发现客户端有缓存,就向客户端发送一个304响应,然后停止程序的执行。 演示地址:http://www.longbill.cn/down/sample/etag.php
cache();
echo date("Y-m-d H:i:s"); 
function cache()
{//author:Longbill ( www.longbill.cn )
  $etag = "eeee";  //标记字符串,可以任意修改
  if ($_SERVER['HTTP_IF_NONE_MATCH'] == $etag)
  {
    header('Etag:'.$etag,true,304);
    exit;
  }
  else header('Etag:'.$etag);
}


2819 read 3 comment(s)
#1
axgle   2006年08月16号 16:15       回复
哈哈,一笑而过~~~~~~~~~
#2
游客   2007年05月08号 14:32       回复
和和,我也作了一个。http://www.e8088.com/pdtshow1/domain/
#3
Guest   2008年12月03号 16:24       回复
服务器可配置吧,如果使用自定义函数岂不是在每一个页面都 需要调用....
添加新的评论
称呼:*
邮件:*
网站:
内容:

Copyright © Longbill 2008-2024 , Designed by EndTo , Powered by EndCMS