IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

PHP强制浏览器不缓存的方法

肖飞的blog 2009-12-24 23:54:39 累计浏览 4,506 次
本机暂存

一般我们要查看网上的一个网页,那么当您第一次访问这个网页的时候,系统首先要将这个网页下载到您的本地计算机的一个临时文件夹中进行缓存,当在一定的时间内,您第二次、第三次来访问这个网页的时候,浏览器就直接从您的本地计算机的临时文件夹中读取这个文件显示,这样做的好处就是避免每次都要重新下载而占用大量的时间和网络资源,不得不说页面的缓存加快了网页的显示,当然也有它的坏处,例如当服务器上的网页己经更新,而本地显示的还是没有更新的网页,这样就不能及时的显示更新后的内容,在某些情况下,我们需要禁止浏览器缓存,以使我们每次看到的页面都是最新的页面(例如后台操作、大型网站的时时新闻页面),这时我们就要禁用浏览器缓存,下面分别说明了在四种不同的页面环境下来禁止网页缓存:

一、对于静态页:

可以利用 标记符的另一种用法来实现,其用法为:



特别说明:有很多人问到,这样设置了没有用,网页仍有缓存,那是因为您没有设置页面过期时间的原因,您必须同时指定当前页面的过期时间,例如:

这儿的meta标签用来定义页面过期时间为:2006年8月23日 23:40:27
需要特别注意的是content的值必须是一个UTC格式的标准时间(有关UTC格式的时间,请参见本站javascript教程)或者GMT时间(由于GMT时间己过时,所以建议用UTC标准格式),如果您要让网页立即过期,您可以设置一个过期时间远小于现在的时间,例如:
Mon,1 Jan 2001 0:0:0 UTC

二、对于ASP页面:

可利用以下语句下实现:

<%
Response.Buffer=true
Response.CacheControl="no-cache"    '禁止代理服务器缓存本页面
Response.Expires=-1000                          '让页面立即过期(这儿最好设置一个绝对值较大的负数)
%>
以下是代码片段:
<% 
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);
%>

以下是代码片段:
<% 
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标签输出之前,否则将会出错。%>%>?PHP>

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 使用gettext来支持PHP的多语言 (累计阅读 39,268)
  2. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,163)
  3. Paypal接口详细代码(PHP版,非API接口) (累计阅读 19,407)
  4. 我的PHP,Python和Ruby之路 (累计阅读 13,146)
  5. include(“./file.php”)和include(“file.php”)区别 (累计阅读 12,788)
  6. 15个最好的免费开源电子商务平台 (累计阅读 12,541)
  7. Redis消息队列的若干实现方式 (累计阅读 12,087)
  8. 到底什么是MVC? (累计阅读 11,865)
  9. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,708)
  10. Rolling cURL: PHP并发最佳实践 (累计阅读 11,486)