我正在一个网站上工作,那里的观众对电脑不是很满意。过去经常收到的投诉是关于(次要(新更新,尽管重要的更新不可见(例如日期和时间被更改(。问题:浏览器缓存和人们不知道如何刷新浏览器。由于受众相当多,不可能向所有人解释这一点。
我们将很快将一个全新的网站上线,所以我怀疑此更改会导致浏览器获得更新......我说的对吗?
但是为了防止过去的抱怨,我希望更好地控制用户的浏览器缓存。
最好在每页放置一个缓存时间(在一天到一周或两周之间(,因为对于一般信息来说,缓存是一件好事,因为它不会经常更新,而且它不像我们的日历那样对时间敏感!但我想要在上次访问后的一天内获得新版本的日历。-->如果可能的话,我什至会考虑缓存页面的某些部分(页眉和页脚不太可能更改内容等(
最好的方法是什么?我是否应该更改服务器设置上的某些内容(在托管允许的范围内(以及如何执行此操作(托管控制面板,php.ini(?
还是我应该在 PHP 中做点什么?或者在 HTML 中,就像我在这里找到的那样:HTML 缓存控件
或者也许是上述部分/全部的组合?
你可以
用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 标头。
您可以通过 .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>
这将使服务器缓存过期,每个请求都将获得新页面