一般我们要查看网上的一个网页,那么当您第一次访问这个网页的时候,系统首先要将这个网页下载到您的本地计算机的一个临时文件夹中进行缓存,当在一定的时间内,您第二次、第三次来访问这个网页的时候,浏览器就直接从您的本地计算机的临时文件夹中读取这个文件显示,这样做的好处就是避免每次都要重新下载而占用大量的时间和网络资源,不得不说页面的缓存加快了网页的显示,当然也有它的坏处,例如当服务器上的网页己经更新,而本地显示的还是没有更新的网页,这样就不能及时的显示更新后的内容,在某些情况下,我们需要禁止浏览器缓存,以使我们每次看到的页面都是最新的页面(例如后台操作、大型网站的实时新闻页面),这时我们就要禁用浏览器缓存,下面分别说明了在四种不同的页面环境下来禁止网页缓存:
一、对于静态页(就是通过meta标签来设置):
<!--expires用于设定网页的过期时间,一旦过期就必须从服务器上重新加载.时间必须使用GMT格式--> <meta http-equiv="expires" content="Sunday 26 October 2008 01:00 GMT" />
或者通过pragma no-cache来设置,pragma出现在http-equiv属性中,使用content属性的no-cache值表示是否缓存网页(为了提高速度一些浏览器会缓存浏览者浏览过的页面,通过下面的定义,浏览器一般不会缓存页面,而且浏览器无法脱机浏览)。
<meta http-equiv="pragma" content="no-cache" />
二、对于ASP页面:
<% Response.Buffer=true Response.CacheControl="no-cache" '禁止代理服务器缓存本页面 Response.Expires=-1000 '让页面立即过期(这儿最好设置一个绝对值较大的负数) %>
三、对于JSP页面:
<% if(request.getProtocol().compareTo("HTTP/1.0")==0){ response.setHeader("Pragma","no-cache"); } if(request.getProtocol().compareTo("HTTP/1.1")==0){ response.setHeader("Cache-Control","no-cache"); } response.setDateHeader("Expires",0); %>
四、对于PHP页面:
<?php header('Cache-Control:no-cache,must-revalidate'); header('Pragma:no-cache'); ?>
强调说明:对于动态页面,缓存的代码必须放在任何HTML标签输出之前,否则将会出错。