我知道作为用户自己,我可以按“F5”来确保或清除我的缓存等。
我只是想知道从网页设计师的角度来看,是否有任何东西可以使这更加“自动化”,因为许多用户可能不知道这样做。
对于动态站点,这可以通过服务器端的“魔法”来完成。
似乎对类似问题的一些答案意味着以某种方式编辑 .htaccess,所以我将对此进行调查。但是,如果有人有适用于静态站点的“快速提示”或代码片段,那就太好了。
该网站上唯一使用的 PHP 是用于联系表格,因此它可以自动发送电子邮件。该网站的其余部分只是图像、文本等。
我知道作为用户自己,我可以按“F5”来确保或清除我的缓存等。
我只是想知道从网页设计师的角度来看,是否有任何东西可以使这更加“自动化”,因为许多用户可能不知道这样做。
对于动态站点,这可以通过服务器端的“魔法”来完成。
似乎对类似问题的一些答案意味着以某种方式编辑 .htaccess,所以我将对此进行调查。但是,如果有人有适用于静态站点的“快速提示”或代码片段,那就太好了。
该网站上唯一使用的 PHP 是用于联系表格,因此它可以自动发送电子邮件。该网站的其余部分只是图像、文本等。
您无法使用某种 JS 解决方案清除缓存,但您可以做的是,每次对您的网站进行新部署/更新时,在您的 css/js 末尾添加一个虚假版本/等编号。
例如:
main.css?v=1.5
myCode.js?v=123
下次更新时,只需稍微更改一下即可:main.css?v=1.51
当用户再次访问您的站点时,由于 URL 将不同,它会自动重新加载它,确保他们使用最新的样式表。
尝试将缓存清除变量添加到包含文件的末尾。例如,不是包括,而是main.js
包括main.js?d=20120102
。JS/CSS 文件会忽略该变量,但该变量会导致客户端认为它是一个尚未缓存的新文件。然后,您可以在更新文件时轻松更改变量。
尝试:
<img src="image/path.jpg?t=<?=time();?>" />
对于您的“静态”网站中的每个图像。当您使用 *.html 文件时,您可以使用 javascript 在 onload 事件中“重新加载”每个图像。
实现这一目标的方法很少。
您可以在静态 html 页面中设置缓存元信息,以指示浏览器不缓存并将请求重定向到原始服务器
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<meta http-equiv="cache-control" content="max-age=0" />
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
使用php,您可以像这样设置标题
<?php
//set headers to NOT cache a page
header("Cache-Control: no-cache, must-revalidate"); //HTTP 1.1
header("Pragma: no-cache"); //HTTP 1.0
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
您还可以使用.htaccess
. 为此,您需要mod_headers
启用。只需将此代码段放入您的.htaccess
文件中。
<filesMatch ".(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 Feb 1994 08:00:00 GMT"
</ifModule>
</filesMatch>
通过使用 html5 样板 ( http://html5boilerplate.com/ ),并确保我转移了他们的“预制”.htaccess,我的网站可以正常显示更新。
老实说,我什至没有真正查看该文件,但我确信它包含了此处描述的一些概念。