2013-08-29 116 views
0

我们解决了在“如何防止Web浏览器缓存页面?”中禁用客户端缓存的任务,但禁用缓存很少是唯一(或最佳)选项。如何控制客户端缓存?

这里我们来看看一种机制,它允许我们利用客户端缓存的方式来控制PHP脚本中的内容。

Apache必需! 如果您将PHP作为Apache Web服务器模块运行,则此方法仅适用,因为它需要使用函数getallheaders(仅适用于Apache)来获取Web浏览器发送的HTTP标头。

+0

在什么情况下?你可以追加?r = randomnumber或者你可以传递头文件的ajax,你需要更具体。 – OneOfOne

+0

搜索'Expires'和'Cache-Control'标题并查看如何使用它们。 – dcro

回答

2

在谷歌第三结果:https://encrypted.google.com/search?sclient=psy&hl=en&site=&source=hp&q=disable+cache+apache&btnG=Google+Search

htaccess的方法:

<FilesMatch ".(html|htm|js|css)$"> 
    FileETag None 
    <ifModule mod_headers.c> 
     Header unset ETag 
     Header set Cache-Control "no-cache, no-store, must-revalidate, max-age=0" 
     Header set Pragma "no-cache" 
     Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" 
    </ifModule> 
</FilesMatch> 

PHP的方法:

<?php 
header("Cache-Control: no-cache, no-store, must-revalidate, max-age=0"); 
header("Pragma: no-cache"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 

jQuery的/ AJAX方法:

$.ajaxSetup ({ 
    // Disable caching of AJAX responses 
    cache: false 
}); 

贫民窟方法:

<a href="/path/page.php?r=random-number-generated-with-javascript-or-php">stuff</a>