TaoGOGO

欢迎您光临,这就是TaoGOGO的网络小窝!
国外免费php+mysql空间(未封)»
«利用《input type=“image”》来巧妙实现map功能

利用PHP的header()控制用户浏览器缓存

 你写的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响应,然后停止程序的执行。 

<?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);
}
?>

令外可以如下
header("Content-Type:text/xml");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");// always modified
header ("Cache-Control: no-cache, must-revalidate");  //不保留缓存

想收藏或者和大家分享这篇好文章→ 分享家:Addthis中国

相关阅读:

Tags: php 缓存 |Comments:(1)|read:(567)

1 to "利用PHP的header()控制用户浏览器缓存"

  1. c
    回复 # 135003
    2010-02-24 at 16:48

 

Leave a Reply




请输入计算结果:5+5

:) lol 8) mrgreen evil arrow :( more »

Tao公告

一定要努力啊,要做生活的强者!不要懈怠!@2009.12.22

搜索

G Show!