PHP下利用header()函数设置浏览器缓存的代码

2015-01-24信息快讯网

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中register_globals参数为OFF和ON的区别(register_globals 使用详解)
PHP函数spl_autoload_register()用法和__autoload()介绍
非常好用的两个PHP函数 serialize()和unserialize()
php木马webshell扫描器代码
php addslashes及其他清除空格的方法是不安全的
用phpmailer实现简单openvpn用户认证的实现代码
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
url decode problem 解决方法
在PHP中利用wsdl创建标准webservice的实现代码
PHP中文件缓存转内存缓存的方法
php urlencode()与urldecode()函数字符编码原理详解
用PHP写的基于Memcache的Queue实现代码
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
一个PHP的QRcode类与大家分享
PHP禁止页面缓存的代码
php 文件缓存函数
简单的PHP缓存设计实现代码
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
PHP缓存技术的使用说明
php数据库连接时容易出错的特殊符号问题
使用bcompiler对PHP文件进行加密的代码
php Notice: Undefined index 错误提示解决方法
php下正则来匹配dede模板标签的代码
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
利用Memcached在php下实现session机制 替换PHP的原生session支持
ThinkPHP中实例Model方法的区别说明
php checkbox 取值详细说明
php include加载文件两种方式效率比较
php简单提示框alert封装函数
PHP通过header实现文本文件下载的代码
ubuntu 编译安装php 5.3.3+memcache的方法
PHP MemCached高级缓存配置图文教程
PHP MemCached 高级缓存应用代码
PHP合并数组+与array_merge的区别分析
Discuz!下Memcache缓存实现方法
PHP 缓存实现代码及详细注释
PHP 文件缓存的性能测试
©2014-2024 dbsqp.com