我知道作为用户自己,我可以点击'F5'来确认,或清除我的缓存等。
我只是想知道从网页设计师的角度来看是否有任何可以使其更“自动”的内容,因为许多用户可能不知道这样做。
对于动态网站,这可以通过服务器端“魔术”完成。
似乎对类似问题的一些答案意味着以某种方式编辑.htaccess,所以我将调查此问题。但是,如果任何人有一个“快速提示”或代码片段,将适用于静态网站,那将是很好的。
网站上使用的唯一PHP是联系表单,因此它可以自动发送电子邮件。网站的其余部分只是图片,文字等。
答案 0 :(得分:8)
您无法使用某种JS解决方案清除缓存,但您可以做的是,每次对您的网站进行新的部署/更新都会添加假的版本/等号到你的css / js的结尾。
例如:
main.css?v=1.5
myCode.js?v=123
下次更新时,只需稍加更改:main.css?v=1.51
当用户再次访问您的网站时,由于网址不同,它会自动重新加载,确保他们使用最多 - 日期样式表。
答案 1 :(得分:3)
尝试将缓存清除变量添加到包含文件的末尾。例如,不包括main.js
,而是包括main.js?d=20120102
。 JS / CSS文件将忽略该变量,但该变量将使客户端认为它是一个尚未缓存的新文件。然后,您可以在更新文件时轻松更改变量。
答案 2 :(得分:1)
尝试:
<img src="image/path.jpg?t=<?=time();?>" />
为“静态”网站中的每个图片。当您使用* .html文件时,您可以使用javascript“重新加载”onload事件中的每个图像。
答案 3 :(得分:0)
实现这一目标的方法很少。
您可以在静态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>
答案 4 :(得分:0)
通过使用html5样板(http://html5boilerplate.com/),并确保我转移到他们的“预制”.htaccess,我的网站正在显示更新。
说实话,我甚至没有真正查看该文件,但我确信它包含了这里描述的一些概念。