深入理解PHP高级技巧、面向对象与核心技术之调整浏览器缓存
来源:互联网 发布:服务器硬件检测软件 编辑:程序博客网 时间:2024/04/29 16:02
缓存页面是保存页面的内容的一种方式,然后在产生请求时提供这个保存的页面版本,而不是服务器上的版本。
对于动态的、PHP驱动的站点,有时我们需要确保终端用户获得的是最新的版本。
利用PHP的header()函数可以调整缓存,包括web浏览器的缓存和代理服务器的缓存。
四种标头的类型:
a). Last-Modified(最后的修改时间)
b). Expires(过期时间)
c). Pragma(编译提示)
d).Cache-Control(缓存控制)
Last-Modified使用UTC时间值,使用来自服务器的更新页面的版本。
Expires标头用来表明缓存的版本过期,设置为一个以前的日期,就会强制使用服务器上的页面。
Header (“Expires: Jul 2013”);
Pragma表明页面数据应该如何被处理,可以避免对页面进行缓存。
Header(“Pragma:no-cache”);
Cache-Control能够更细致的控制
指令
含义
Public
可以在任何地方缓存
Private
只能呗浏览器缓存
No-cache
不能在任何地方缓存
Must-revalidate
缓存必须检查更新版本
Proxy-revalidate
代理缓存必须检查更新版本
Max-age
内容能被缓存的时间以秒为单位
s-maxage
覆盖共享缓存的max-age值设置
为了避免任何系统对页面进行缓存,可以这样设置标头:
Header(“Last-Modified:Thu,5Jun 2012 14:26:00 GMT”);//Right Now
Header (“Expires:Mon,26 Jul1997 05:00:00 GMT”);//way back when
Header(“Pragma:no-cache”);
Header(“Cache-Control:no-cache”);
虽然这种方法很常见,但是很笨拙,并不是每个PHP脚本都不能缓存,设置时活跃的站点也会把一些脚本缓存一分钟或者更长时间,(很活跃的站点会频繁的收到大量的请求而缓存版本可以减少服务器的负载)
<?PHP
//connect to the database
$dbc = mysqli_connect();
//get latest dates as timestamps
$q = 'SELECTUNIX_TIMESTAMP(MAX(date_added)),UNIX_TIMESTAMP(MAX(date_completed)) FROMtasks';
$r = mysqli_query($dbc,$q);
list($max_a,$max_c) = mysqli_fetch_array($r,MYSQL_NUM);
$max = ($max_a > $max_c)?$max_a:$max_c;
$interval = 60 * 60 * 6;
header("Last-Modified:".gmdate("r",$max));
header("Expires:".gmdate("r",($max+$interval)));
header("Cache-Control:max-age = $interval");
?>
<!doctype html>
利用UNIX_TIMESTAMP()函数把返回值转换为整数。利用三元运算符把最新的时间赋值给$max.
1. 定义一个合理的缓存空间
$interval = 60*60*60;
2. 设置脚本最后修改时间为数据库的更新的最后时间。
header("Last-Modified:".gmdate("r",$max));
3. 设置有效期限是指当前时间加上前面定义的时间间隔。
header("Expires:".gmdate("r",($max+$interval)));
4. 取代使用一个日期值,使用秒数来设置变量max-age的值。
注意:
从理论上讲,缓存是一个不错的设计,他可以把不必要的服务器请求降低到最少,在适当控制的情况下,缓存对于服务器端和客户端都是有益的。放置在HTmL代码部分的Meta标签也会影响页面的缓存,但是在某些服务器上不如header()方法更可靠。
- 深入理解PHP高级技巧、面向对象与核心技术之调整浏览器缓存
- 深入理解PHP:高级技巧、面向对象与核心技术
- 深入理解PHP:高级技巧、面向对象与核心技术(原书第3版) -- 高级 PHP 技巧
- 深入理解PHP:高级技巧、面向对象与核心技术(原书第3版) -- 设计模式之单一模式
- 深入理解PHP:高级技巧、面向对象与核心技术(原书第3版) -- 设计模式之工厂模式
- 深入理解PHP:高级技巧、面向对象与核心技术(原书第3版) -- 设计模式之组合模式
- 深入理解PHP:高级技巧、面向对象与核心技术(原书第3版) -- 设计模式之策略模式
- PHP 面向对象编程之深入理解方法重载与方法覆盖
- PHP面向对象深入理解之五(内省函数与反射类)
- PHP 调整浏览器缓存
- PHP面向对象学习之二:深入了解面向对象高级特性
- PHP核心技术与最佳实践学习(一)面向对象
- 《PHP核心技术与最佳实践》读书笔记(面向对象篇)
- 深入PHP面向对象、模式与实践——高级特性(1)
- 深入PHP面向对象、模式与实践——高级特性(2)
- 深入PHP面向对象、模式与实践——高级特性(3)
- 深入PHP面向对象、模式与实践——高级特性(4)
- 深入PHP面向对象、模式与实践——高级特性(5)
- Html的一些常用标签
- Hadoop学习(2)——虚拟机安装
- RedHat三个ISO文件的安装
- _cmd的详细用法
- CentOS6.5 安装 VMware11 错误
- 深入理解PHP高级技巧、面向对象与核心技术之调整浏览器缓存
- /var/log目录下的20个Linux日志文件功能详解
- 常见的几种RuntimeException
- 让cloudera manager装的spark支持hql
- centos7安装oracle中遇到的常见问题解决方法
- Mybatis项目的数据流程图
- linux 下 压缩当前文件 (踢除无用文件)
- Single Number II
- bootloader->boot.img(kernel->ramdisk+system+userdata)