PHP下利用header()函数设置浏览器缓存的代码

前端之家收集整理的这篇文章主要介绍了PHP下利用header()函数设置浏览器缓存的代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这涉及到4种头标类型: Last-Modified(最后修改时间); @H_5020@Expires(有效期限); @H5020@Pragma(编译指示); @H5020@Cache-Control(缓存控制); @H502_0@  前三个头标属于HTTP1.0标准。头标Last-Modified使用UTC日期时间值。如果缓存系统发现Last-Modified值比页面缓存版本的更接 @H_502_0@近当前时间,他就知道应该使用来自服务器的新版本。   Expires 表明了缓存版本何时应该过期(格林威治标准时间)。把它设置为一个以前的时间就会强制使用服务器上的页面。   Pragma生命了页面数据应该如何被处理。可以这样避免对页面进行缓存:   header("Pragma:no-cache");   Cache-Co0ntrol 头标是在HTTP1.1里添加的,能够实现更细致的控制(还应该继续使用HTTP1.0头标)。Cache-Control的设置有 @H_5020@很多,如下表: @H502_0@

指令 含义
public 可以在任何地方缓存
private 只能被浏览器缓存
no-cache 不能在任何地方缓存
must-revalidate 缓存必须检查更新版本
proxy-revalidate 代理缓存必须检查更新版本
max-age 内容能够被缓存的时期,以秒表示
s-maxage 覆盖共享缓存的max-age设置
下面实例利用header()设置浏览器的缓存: @H_502_0@
代码如下:
502_0@PHP # Script 2.7 - view_tasks.PHP @H_502_0@// Connect to the database: @H_502_0@$dbc = @MysqLi_connect ('localhost','username','password','test') OR die ('

Could not connect to the database!

'); @H_502_0@// Get the latest dates as timestamps: @H_502_0@$q = 'SELECT UNIX_TIMESTAMP(MAX(date_added)),UNIX_TIMESTAMP(MAX(date_completed)) FROM tasks'; @H_502_0@$r = MysqLi_query($dbc,$q); @H_502_0@list($max_a,$max_c) = MysqLi_fetch_array($r,MysqLI_NUM); @H_502_0@// Determine the greater timestamp: @H_502_0@$max = ($max_a > $max_c) ? $max_a : $max_c; @H_502_0@// Create a cache interval in seconds: @H_502_0@$interval = 60 * 60 * 6; // 6 hours @H_502_0@// Send the header: @H_502_0@header ("Last-Modified: " . gmdate ('r',$max)); @H_502_0@header ("Expires: " . gmdate ("r",($max + $interval))); @H_502_0@header ("Cache-Control: max-age=$interval"); @H_502_0@?> @H_502_0@
@H_502_0@1.连接数据库获取数据表中最新的日期值date_added,date_completed,用UNIX_TIMESTAMP()函数将返回值转化为整数然后获取最大值赋予$max。 @H_502_0@2.定义一个合理缓存时间。 @H_502_0@
代码如下:
502_0@$interval=60*60*6 @H_502_0@
@H_502_0@合理值屈居于页面本身、访问者的数量页面的更新频率,以上代码为6个小时。 @H_502_0@3.发送Last-Modified头标。 @H_502_0@
代码如下:
502_0@header("Last-Modified:".gmdate("r",($max+$interval))); @H_502_0@
@H_502_0@gmdate()函数使用了参数"r"时,会根据HTTP规范返回相应的日期格式。 @H_502_0@4.设置Expires头标。 @H_502_0@
代码如下:
502_0@header ("Expires: " . gmdate ("r",($max + $interval))); @H_502_0@
@H_502_0@5.设置Cache_Control头标。 @H_502_0@
代码如下:
502_0@header ("Cache-Control: max-age=$interval"); @H_502_0@

猜你在找的PHP相关文章