您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > PHP >

PHP高级应用:header()函数设置浏览器缓存

来源:未知 责任编辑:智问网络 发表时间:2013-10-22 19:16 点击:
PHP高级应用之header()函数设置浏览器缓存

这涉及到4种头标类型:
Last-Modified(最后修改时间);
Expires(有效期限);
Pragma(编译指示);
Cache-Control(缓存控制);
前三个头标属于HTTP1.0标准。头标Last-Modified使用UTC日期时间值。如果缓存系统发现Last-Modified值比页面缓存版本的更接
近当前时间,他就知道应该使用来自服务器的新版本。

Expires 表明了缓存版本何时应该过期(格林威治标准时间)。把它设置为一个以前的时间就会强制使用服务器上的页面。

Pragma生命了页面数据应该如何被处理。可以这样避免对页面进行缓存:

header("Pragma:no-cache");

Cache-Co0ntrol 头标是在HTTP1.1里添加的,能够实现更细致的控制(还应该继续使用HTTP1.0头标)。Cache-Control的设置有
很多,如下表:
指令                   含义
public                 可以在任何地方缓存
private             只能被浏览器缓存
no-cache             不能在任何地方缓存
must-revalidate     缓存必须检查更新版本
proxy-revalidate     代理缓存必须检查更新版本
max-age             内容能够被缓存的时期,以秒表示
s-maxage             覆盖共享缓存的max-age设置
下面实例利用header()设置浏览器的缓存:
<?php # Script 2.7 - view_tasks.php
// Connect to the database:
$dbc = @mysqli_connect (localhost, username, password, test) OR die (<p>Could not connect to the database!</p></body></html>);
// Get the latest dates as timestamps:
$q = SELECT UNIX_TIMESTAMP(MAX(date_added)), UNIX_TIMESTAMP(MAX(date_completed)) FROM tasks;
$r = mysqli_query($dbc, $q);
list($max_a, $max_c) = mysqli_fetch_array($r, MYSQLI_NUM);
// Determine the greater timestamp:
$max = ($max_a > $max_c) ? $max_a : $max_c;
// Create a cache interval in seconds:
$interval = 60 * 60 * 6; // 6 hours
// Send the header:
header ("Last-Modified: " . gmdate (r, $max));
header ("Expires: " . gmdate ("r", ($max $interval)));
header ("Cache-Control: max-age=$interval");
?>

1、连接数据库后获取数据表中最新的日期值date_added,date_completed,用UNIX_TIMESTAMP()函数将返回值转化为整数然后获取最大值赋予$max。

2、定义一个合理缓存时间。
$interval=60*60*6
合理值屈居于页面本身、访问者的数量和页面的更新频率,以上代码为6个小时。

3、发送Last-Modified头标。
header("Last-Modified:".gmdate("r",($max $interval)));
gmdate()函数使用了参数"r"时,会根据HTTP规范返回相应的日期格式。

4.设置Expires头标。
header ("Expires: " . gmdate ("r", ($max $interval)));

5.设置Cache_Control头标。
header ("Cache-Control: max-age=$interval");
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • PHP测试
    • 十天学会php之第六天
    • 几种显示数据的方法的比较
    • 使用xmlhttp为网站增加域名查询功能
    • PHP+MYSQL+Javascript数据库查询结果的动态显示
    • 查找数组中指定键名的值
    • 用redis实现跨服务器session
    • 用新浪微博接口发送图片微博失败的原因
    • smarty局部缓存技术[源码分析]
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1