PHP实例:使用header 304实现php动态网页设置浏览器的缓存

PHP实例:使用header 304实现php动态网页设置浏览器的缓存-第1张-菜鸟博客

很多人可能不知道,动态网页在浏览器也是可以缓存的。

下面就以 PHP 脚本为实例,阐述如何设置php动态网页在浏览器缓存

<?php
//设置网页过期时间为1小时
$duetime = 60*60;
//获取浏览器会向服务器传送 Last-Modified 报头
$modify_time =  $_SERVER['HTTP_IF_MODIFIED_SINCE'];
//当浏览器在设置时间之内再次访问该网页时,发送 HTTP 304 的状态码,这样就节省了传输数据量。
if(strtotime($modify_time) + $duetime > time())
{
 header('HTTP/1.1 304');
 exit();
}
//发送Last-Modified头,设置文档的最后的更新日期。
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
//发送Expires头标,设置当前缓存的文档过期时间,GMT格式,我们使用的是GMT+8时区
header('Expires: '.gmdate('D, d M Y H:i:s',time()+$duetime).' GMT');
//发送Cache_Control头,设置xx秒以后文档过时,跟 Expires 类似,因为浏览器时间可能跟服务器时间不协调,用  Cache-Control 报头可以得到限制,如果同时出现,max-age优先。
header('Cache-Control: max-age='.$duetime);
//输出内容
echo time();
?>

这里涉及到4种header头标类型: 

Last-Modified(最后修改时间); 

Expires(有效期限); 

Pragma(编译指示); 

Cache-Control(缓存控制); 

前三个头标属于HTTP1.0标准。头标Last-Modified使用UTC日期时间值。如果缓存系统发现Last-Modified值比页面缓存版本的更接近当前时间,他就知道应该使用来自服务器的新版本。

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

Pragma申明了页面数据应该如何被处理。可以这样避免对页面进行缓存: 

header("Pragma:no-cache"); 

Cache-Control 头标是在HTTP1.1里添加的,能够实现更细致的控制。

更多信息在这里就不多阐述


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

猜你喜欢

PHP教程:循环每4个li包裹一个div

PHP教程:循环每4个li包裹一个div

有的时候我们需要做的是每4个循环在数据的输出周围包装一个div。正常foreach循环是这样的:<?php  foreach ($articles as ...

PHP教程:在foreach循环文章列表中插入随机广告位

PHP教程:在foreach循环文章列表中插入随机广告位

之前做了一个插件zblogphp插件:广告伪装成文章插件 ,但其实插件还是有些是实现不了的。那么怎么办呢?最好最快的方法,修改主题模板文件,在循环列表加入判断加入相关广告代码。那样效果是最好的。$i&...

评论列表

王源

这个很好,网站打开速度变的很快

发表评论