如何确保显示最新版本的静态网站?

时间:2013-01-02 16:47:24

标签: javascript jquery html5 css3 web-deployment

我知道作为用户自己,我可以点击'F5'来确认,或清除我的缓存等。

我只是想知道从网页设计师的角度来看是否有任何可以使其更“自动”的内容,因为许多用户可能不知道这样做。

对于动态网站,这可以通过服务器端“魔术”完成。

似乎对类似问题的一些答案意味着以某种方式编辑.htaccess,所以我将调查此问题。但是,如果任何人有一个“快速提示”或代码片段,将适用于静态网站,那将是很好的。

网站上使用的唯一PHP是联系表单,因此它可以自动发送电子邮件。网站的其余部分只是图片,文字等。

5 个答案:

答案 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,我的网站正在显示更新。

说实话,我甚至没有真正查看该文件,但我确信它包含了这里描述的一些概念。