如何控制浏览器缓存?

时间:2014-12-09 16:51:45

标签: php html caching hosting browser-cache

我正在一个网站上工作,观众对电脑不太满意。过去经常收到的投诉是关于(次要的)新更新,但重要的更新不可见(例如日期和时间被更改)。问题:浏览器缓存和不知道如何刷新浏览器的人。由于观众人数众多,所以不可能向所有人解释。

我们很快会在线投放一个新网站,所以我怀疑这个更改会导致浏览器获得更新...我是否正确在这个?

但是为了防止过去的抱怨,我想更好地控制用户的浏览器缓存。

最好每页放一个缓存时间(一天到一到两周),因为一般信息缓存是一件好事,因为它不经常更新而且不是我们的压延机对时间敏感! 但我想在上次访问后的一天内获得新版本的日历。 - >如果可能的话,我甚至会考虑缓存部分页面(页眉和页脚不太可能改变内容等)。

最好的方法是什么?我应该更改服务器设置上的内容(主机允许我),我该怎么做(托管控制面板,php.ini)?

或者我应该在PHP中做些什么? 或者像我在这里找到的HTML:HTML Cache control

或者可能是上述部分/全部的组合?

2 个答案:

答案 0 :(得分:3)

您可以使用 PHP HTML

执行此操作

<强> PHP

<?php

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>

<强> HTML

<meta http-equiv="expires" content="Day, 01 Mon 2014 00:00:00 GMT"/>
<meta http-equiv="pragma" content="no-cache" />

请确保将其放在php或html的主要包含文件中,以便为所有页面执行此操作。我会在html上使用php标头。

答案 1 :(得分:0)

您可以通过.htaccess实现此目的:

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

这将使服务器缓存失效,每个请求将获得新页面