时间:2021-07-01 10:21:17 帮助过:9人阅读
指令 | 含义 |
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");