2016-09-20 59 views
0

我有一个托管在Amazon S3上的静态网站。我经常更新它。但是我发现很多访问它的用户正在查看陈旧的副本。如何确保静态网站页面是新鲜的?

顺便说一句,该网站是:http://cosi165a-f2016.s3-website-us-west-2.amazonaws.com),它生成了一个名为nanoc的ruby静态网站生成器(顺便说一句,非常好)。它为网站编译源文件:https://github.com/Coursegen/cosi165a-f2016进入html,css,js等文件。

我认为这与页面新鲜度以及浏览器缓存页面有关。

如何确保我的用户看到新的页面?

+0

通过更新,你是指页面内容或静态文件(CSS,JS)? – JoseAPL

+0

是的,我更改内容,然后上传更改后的html,但也可能是其他文件。 – pitosalas

+0

你的html文件是否被缓存?关于javascript和css文件,你可以阅读这篇关于缓存清除的文章,以防止你的文件被缓存http://curtistimson.co.uk/front-end-dev/what- is-cache-busting/ – JoseAPL

回答

1

一种常见的技术是在您将静态资产更新为S3时跟踪上次的时间戳,然后将该时间戳用作html中的查询字符串参数。

像这样:

<script src="//assets.com/app.min.js?1474399850"></script> 

浏览器将仍然缓存这一结果,但如果时间戳改变,浏览器将获得一个新的副本。

该技术被称为“cachebusting”。

如果你使用grunt,有一个grunt模块:https://www.npmjs.com/package/grunt-cachebuster。它会计算资产内容的散列并将其用作文件名。

+0

听起来很有希望,但我不明白。该网站(顺便说一句:http://cosi165a-f2016.s3-website-us-west-2.amazonaws.com)生成了一个名为nanoc的ruby静态网站生成器(顺便说一句,非常好)。它将网站的源代码材料编译成html,css,js和其他文件。https://github.com/Coursegen/cosi165a-f2016 脚本标签到底在哪里,它可以在我上面描述的场景中工作吗? – pitosalas

+0

这是:http://avdgaag.github.io/nanoc-cachebuster/ –

+0

乔,这是一个很好的链接。我会尝试。顺便说一下,我注意到这个例子似乎集中在一个css文件上。我的兴趣实际上也在所有的html文件中。您不需要知道nanoc来解释此代码: route'/ styles /'do item.identifier.chop + fingerprint(item [:filename])+'。' + item [:extension] end 您是否认为我需要类似的所有文件类型的行而不仅仅是/ styles /? – pitosalas