php---header函数设置浏览器缓存

这涉及到4种头标类型: 

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

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

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

header("Pragma:no-cache"); 

Cache-Control 头标是在HTTP1.1里添加的,可以实现更细致的控制(还应该继续使用HTTP1.0头标)。Cache-Control的设置有 

不少,以下表: php

指令                                 含义html

public                              能够在任何地方缓存mysql

private                             只能被浏览器缓存sql

no-cache                         不能在任何地方缓存数据库

must-revalidate                缓存必须检查更新版本浏览器

proxy-revalidate               代理缓存必须检查更新版本缓存

max-age                           内容可以被缓存的时期,以秒表示服务器

s-maxage                         覆盖共享缓存的max-age设置函数

下面实例利用header()设置浏览器的缓存:fetch

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

相关文章
相关标签/搜索