我正在一个网站上工作,观众对电脑不太满意。过去经常收到的投诉是关于(次要的)新更新,但重要的更新不可见(例如日期和时间被更改)。问题:浏览器缓存和不知道如何刷新浏览器的人。由于观众人数众多,所以不可能向所有人解释。
我们很快会在线投放一个新网站,所以我怀疑这个更改会导致浏览器获得更新...我是否正确在这个?
但是为了防止过去的抱怨,我想更好地控制用户的浏览器缓存。最好每页放一个缓存时间(一天到一到两周),因为一般信息缓存是一件好事,因为它不经常更新而且不是我们的压延机对时间敏感! 但我想在上次访问后的一天内获得新版本的日历。 - >如果可能的话,我甚至会考虑缓存部分页面(页眉和页脚不太可能改变内容等)。
最好的方法是什么?我应该更改服务器设置上的内容(主机允许我),我该怎么做(托管控制面板,php.ini)?
或者我应该在PHP中做些什么? 或者像我在这里找到的HTML:HTML Cache control
或者可能是上述部分/全部的组合?
答案 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>
这将使服务器缓存失效,每个请求将获得新页面