PHP下利用header()函数设置浏览器缓存的代码 |
||||||||||||||||
本文标签: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的设置有 很多,如下表:
复制代码 代码如下: <?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"); |