在php编程中使用header()函数发送文件头,设置浏览器缓存,加快站点的访问速度
来源:互联网 发布:内网管控软件 编辑:程序博客网 时间:2024/05/08 20:04
转自:http://www.abc3210.com/2013/phper_07/97.shtml
http://www.lampweb.org/seo/4/11.html
当我们使用抓包工具查看http状态时,我们可以看到200,304,from cache之类的标识,也许你也早已注意到了他们,并明白他们的意思。但是,你是否想过在你的程序中加入代码主动告诉浏览器,更好地利用浏览器缓存。
备注:本章所有案例都是使用chrome 17.0.963.79 m浏览器,测试方式为每次打开浏览器新窗口的方式测试,而不是F5刷新。
我们先做一个没有缓存的页面,叫做nocache.php
代码如下:
用浏览器打开,我们可以看到每次打开页面,都是打印新的时间,返回的状态码是200,表明在默认情况下,我们的浏览器没有使用缓存。
我们再做一个页面,叫做last_modified.php
代码如下:
用浏览器打开,我们可以看到第一次打开,返回的状态码为200,打印时间为最新时间。然后我们第二次打开,可以看到状态码为304,时间和刚才的时间一样,表明我们是使用到缓存了。我们删除last_modified.php文件,然后第三次打开页面,浏览器返回404错误,可见Last-Modified虽然使用了缓存,但是每次打开页面依然需要向服务器发起http请求,浏览器根据用户的$_SERVER['HTTP_IF_MODIFIED_SINCE']来判断浏览器的内容是否过期,没过期的话返回304状态,浏览器内容从缓存中读取。
我们再做一个页面,叫做 expires.php
代码如下:
用浏览器打开,我们可以看到第一打开,返回的状态为200,时间为最新的时间。然后我们第二次打开,可以看到状态码依然是200,时间依然是旧的时间,Size栏目显示为from cache,表示内容是直接从浏览器读取。我们删除expires.php文件,然后第三次在新窗口中打开,可以看到返回200状态码,打印时间依然是旧的,Size依然提示为from cache,由此可见,设置了Expires,就算删除页面,浏览器端依然可以显示,表明浏览器根本就没有向服务器发起http请求。
到这里,也许你会感觉Expires比Last-Modified缓存效果更好是吧,因为本地有缓存数据时,不需要向服务器发起http请求,服务器的并发数会明显的减少,可以少处理很多http请求。但是Expires也有缺点,那就是设置的过期时间是服务器的时间,而不是你本地的时间,这样如果服务器时间跟你本地时间不一致时,可能并没有起到缓存的效果。HTTP/1.1为了弥补Expirse的不足,引入了Cache-Control标记。格式如下Cache-Control: max-age=<second>,这个时间是相对浏览器本地时间,所以更加准确。
我们再做一个页面,叫做cached_control.php
代码如下:
我们测试可以得到设置Expires一样的效果,也就是缓存后,删除文件,依然在浏览器缓存有效期内可以正常访问页面。
好了,over了,下次当你服务器并发太高,服务器资源和带宽资源不足时,请记住伟大的浏览器缓存吧!也许你依然不以为然,觉得提高服务器的吞吐量有很多办法,比如在服务器端做缓存,把页面静态化,等等。但是我相信有一个东西你应该会在意,没错,就是带宽,在意吧?如果能利用好浏览器缓存,将可以降低你的宽带资源,这样不是很好吗。
- 在php编程中使用header()函数发送文件头,设置浏览器缓存,加快站点的访问速度
- 如何使用浏览器缓存来加快站点的访问速度
- php中使用header函数的http头设置
- php中使用header函数的http头设置
- php中使用header函数的http头设置
- 【ZZ】一些在php中使用header函数设置http头的示例方法
- 一些在php中使用header函数设置http头的示例方法
- WordPress 设置浏览器端缓存,加快访问速度
- PHP中使用header函数发送http头信息
- PHP下利用header()函数设置浏览器缓存的代码
- php使用header设置浏览器缓存
- PHP使用header设置浏览器缓存
- PHP使用header设置浏览器缓存
- PHP使用header设置浏览器缓存
- PHP 使用header函数设置HTTP头的示例方法
- PHP 中 header()函数的作用是给客户端发送头信息。
- PHP中Header()函数设置HTTP头总结
- PHP中Header()函数设置HTTP头总结
- 手工配置tnsnames.ora的空格问题
- leedcode 每日一题 202. Happy Number
- 解决[INSTALL_FAILED_UID_CHANGED]无法安装包问题
- 每天一个linux命令,地址
- ASM是怎样访问及修改编译了的class文件
- 在php编程中使用header()函数发送文件头,设置浏览器缓存,加快站点的访问速度
- 用Caffe提取深度特征
- varnishd中文man page(1)
- 【数据库】Oracle利用列名获得表名
- 睡眠不好,肝病烦恼
- 背包问题
- URAL 1553【CAVE and TUNNEL】
- 微信iOS 9适配总结
- Find a way