PHP下利用header()函数设置浏览器缓存的代码
程序员文章站
2022-05-14 12:10:06
这涉及到4种头标类型: last-modified(最后修改时间); expires(有效期限); pragma(编译指示); cache-control(缓存控制); ...
这涉及到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的设置有
很多,如下表:
下面实例利用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");
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设置 |
复制代码 代码如下:
<?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");
上一篇: js原生开发一个2048小游戏
推荐阅读
-
PHP下利用header()函数设置浏览器缓存的代码
-
PHP高级应用:header()函数设置浏览器缓存
-
PHP高级应用:header()函数设置浏览器缓存
-
PHP高级应用:header()函数设置浏览器缓存_PHP教程
-
head first c 中文版 PHP下利用header函数设置浏览器缓存的代码
-
PHP下利用header()函数设置浏览器缓存的代码
-
PHP下利用header()函数设置浏览器缓存的代码_PHP教程
-
PHP下利用header()函数设置浏览器缓存的代码_php技巧
-
PHP下利用header()函数设置浏览器缓存的代码
-
head first c 中文版 PHP下利用header函数设置浏览器缓存的代码