php 浏览器缓存

浏览器缓存,就完全不是那么回事了,缓存内容存储在浏览器本地,而内容却由web服务器生成,任何一方都不可能独立完成这一系统过程,所以它们之间必须有一种沟通机制,这就是http中的“缓存协商”。
我们先来看一个通常的http请求:
host         www.111cn.net
user-agent         mozilla/5.0 (windows; u; windows nt 6.1; zh-cn; rv:1.9.2.9) gecko/20100824 firefox/3.6.9        firephp教程/0.4
accept         text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-language         zh-cn,zh;q=0.5
accept-encoding         gzip,deflate
accept-charset         gb2312,utf-8;q=0.7,*;q=0.7
keep-alive         115
connection         keep-alive
上面就是一个普通的http请求,为了实现在浏览器缓存控制,我们需要了解http响应头中的四种标记:
last-modified:最后修改gmt时间
etag:通过一串编码来标记内容是否更改过
expires:指定一个过期gmt时间
cache-control:mag-age=相对于浏览器本地的过期秒数(可避免服务器时间不正确的情况下同样起作用)

http返回的状态代码:
200——请求成功
304——客户端已经执行了get,但文件未变化
400——错误请求,如语法错误
500——服务器产生内部错误
501——服务器不支持请求的函数

以下代码使用了以上四种方法来控制浏览器内容缓存一个小时,如果在一小时之内则立即返回304状态码通知浏览器使用本地的内容。这将节省服务器程序执行时间,网络传输时间(仅返回一个头文件)
$modified_time = $_server['http_if_modified_since'];
if (strtotime($modified_time) + 3600 > time()) {
header("http/1.1 304");
exit(0);
}
header("last-modified:" . gmdate("d, d m y h:i:s") . "gmt");
header("expires:" . gmdate("d, d m y h:i:s", time() + 3600) . "gmt");
header("cache-control: max-age=3600");

特别需要说明一下的是:expires需要服务器商支持expires模块默认情况下是不会开启,使用以下命令即可:
a2enmod expires         //启用expires模块
/etc/init.d/apache2 restart        //重启apache服务
我们还可以通过修改http.conf配置中:
expiresactive        on expiresbytype image/gif “access plus 1 month” expiresbytype text/css教程 “now plus 2 day” expiresdefault         “now plus 1 day”
以上是针对静态内容的mime类型来设置过期时间,因为我们无法给静态文件直接指定一个绝对到期时间,所以采用”access plus”式的语法,由web服务器在该内容被请求的时候动态计算一个绝对到期时间,作为expires标记的内容。
值得一提的是,对于常见的静态文件格式,即便是web服务器返回http响应头中没有expires标记,浏览器也会根据一些其它线索猜测一个过期时间,比如ie在某种缓存模式下,对于gif图片设置为永不过期,除非我们配置expires为马上过期,也就是将过期时间设置为当前时间或者0。

时间: 2024-08-30 12:08:34

php 浏览器缓存的相关文章

win7系统怎么清除360浏览器缓存

  win7系统怎么清除360浏览器缓存 1.打开360浏览器,点击主页的工具栏->选择清除上网痕迹; 2.在弹出的对话框中选择清除时间和所要清除的记录,勾选退出浏览器时完全清楚勾选的痕迹,点击立即清理; 3.清理完毕时显示出的界面如图. 解决方法二: 1.打开360浏览器->打开最右边的工具栏->选择工具->internet选项; 2.在弹出的internet属性对话框中选择常规->浏览历史记录->选择删除; 3.在弹出的浏览历史记录的对话框中选择所要清除的记录,点击

浏览器缓存

  浏览器缓存   2. 缓存技术 首先要说明,很多缓存技术依赖静态化.下面展示了缓存可能出现的位置. 用户user -> 浏览器缓存 IE/Firefox Cache -> 逆向代理缓存 Reverse proxy Cache -> WEB服务器缓存 Apache cache -> 应用程序缓存 php cache -> 数据库缓存 database cache 当然交换机,网络适配器,硬盘上也有Cache 但这不是我们要讨论的范围. 缓存存储方式主要是内存和文件两种,后者

怎么删除win7系统搜狗浏览器缓存和浏览记录?

  怎么删除win7系统搜狗浏览器缓存和浏览记录?            解决方法一: 1.找到搜狗浏览器,并打开浏览器; 2.在页上方找到[工具]菜单栏; 3.点击工具,则可以看到[清除浏览记录],点击清理浏览记录,弹出清除浏览记录框,选择要清理的内容,点击立刻清除,则浏览记录被清除; 解决方法二: 1.同样打开浏览器,在页面上方找到[工具],点击工具菜单按钮,选择[选项]菜单按钮; 2.进入浏览器选项-基本设置页面,在该页面,找到[Internet选项],点击该菜单按钮;

怎样清空360浏览器缓存

  第一步,先打开360浏览器,在右上角找"工具"这个选项,并点击"工具"选项,点击清除上网痕迹,如图: 第二步,找到浏览器缓存的临时文件. 最后,痕迹清除完毕!

JS清除IE浏览器缓存的方法

本文为大家详细介绍下js中自动清除ie缓存的几种方法,大家可以根据自己的需求自由选择适合自己的,希望对大家学习js有所帮助   js中自动清除ie缓存方法 - 常用 对于动态文件,比如 index.asp?id=... 或者 index.aspx?id=... 相信有经验的程序员都知道怎样禁止浏览器缓存数据了. 但是对于静态文件(css,jpg,gif等等), 在什么场合下面我们需要禁止浏览器缓存他们,怎么做? 方法一:Dojo中我们可以用简单的方法完成:在dojo.xhrGet(包括post)

ie浏览器缓存是什么?

  ie浏览器缓存是什么? 缓存是指临时文件交换区,电脑把最常用的文件从存储器里提出来临时放在缓存里,就像把工具和材料搬上工作台一样,这样会比用时现去仓库取更方便.因为缓存往往使用的是RAM(断电即掉的非永久储存),所以在忙完后还是会把文件送到硬盘等存储器里永久存储.电脑里最大的缓存就是内存条了,最快的是CPU上镶的L1和L2缓存,显卡的显存是给GPU用的缓存,硬盘上也有16M或者32M的缓存.千万不能把缓存理解成一个东西,它是一种处理方式的统称!

如何删除浏览器缓存

  为了提高访问网页的速度,InternetExplorer浏览器会采用累积式加速的方法,将你曾经访问的网页内容(包括图片以及cookie文件等)及绝大部分浏览的信息和内容都会存放在电脑里.这个存放空间,我们就称它为IE缓存.以后我们每次访问网站时,IE会首先搜索这个目录,如果其中已经有访问过的内容,那IE就不必从网上下载,而直接从缓存中调出来,从而提高了访问网站的速度. 虽然缓存加快了网页的访问速度,但同时当有些网页更新后不能很快的获得最新的数据,所以在我们用一段时间电脑后,有必要将我们浏览器

清除Flash缓存和各种浏览器缓存的方法

现在很多朋友在玩QQ空间里面的游戏或其他网页游戏的时候(比如QQ农场,牧场),经常会出现卡机的现象,进不去,大部分的原因是因为IE缓存造成的,这里小编就来教大家怎么清除浏览器缓存.一起来看看吧! 清除Flash缓存: 鼠标右键点击您在玩的游戏flash --> 选弹出菜单的"设置" --> 进度条拖动到最左侧(见下图) --> 接着选"确定" 清除浏览器缓存: 1.IE6 在浏览器中选择工具-->Internet选项-->Interne

如何清除360浏览器缓存?

  360浏览器清除缓存的方法: 1. 第1步:点击浏览器右上方的"工具"→"清除上网痕迹",打开对话框; 2. 第2步:"清除这段时间的数据"栏中选择"全部";勾选"浏览历史记录"."地址栏下拉列表"."下载历史记录"."浏览器缓存的临时文件",然后点击"立即清理"即可.

Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因_javascript技巧

看到别人写的JS,ajax请求地址后加随机参数,比如XXXX?t= + new Date().getTime(). 一开始搞不懂为什么,网上查了资料,原因是防止浏览器缓存. 浏览器为了提高用户访问同一页面的速度,会对页面数据进行缓存.当url请求地址不变时, 有时候会导致浏览器不发送请求,直接从缓存中读取之前的数据. 如果数据改变了,而没加随机数,读取的数据会跟之前一样. 加上随机数,就是欺骗浏览器url改变了,会每次都向服务器发送请求而不去读缓存