当我发布新版本的网站时,为什么我的用户没有看到最新的更新?

时间:2009-11-03 18:36:34

标签: apache deployment tomcat caching

上周四我们刚刚发布了我们网站的新版本。最大的变化是我们从Prototype转换为jQuery。这当然包括对引用的javascript文件的大量更改。还有新的css文件更改。不幸的是,我们的许多客户都没有看到这些变化。我甚至让一个客户清除了他们的浏览器缓存,按F5并直接下载js文件。他仍然是旧版本。

我们有什么方法可以通知所有参与者(浏览器,代理服务器等)文件更改?

BTW,我们的许多客户都是财富500强企业。他们使用IE 6,经常在代理服务器后面。

我们使用Tomcat 6和Apache 2.

4 个答案:

答案 0 :(得分:3)

我注意到StackOverflow在其文件中使用了版本号

http://sstatic.net/so/js/question.js?v=5207

所以我在我们的网站上尝试了这个,它似乎正在运作。有一个特别顽固的浏览器的用户在更改后立即看到了结果。

我喜欢这样的事情是我们实现它并不困难,它仍然允许浏览器和代理缓存不会发生很大变化的文件。

答案 1 :(得分:2)

对于Tomcat,在部署时请确保在重新启动之前删除work / Catalina / localhost目录中的所有内容。这是tomcat的缓存目录。另外,如me_here所述,在servlet / JSP中添加标题可能会有所帮助。

答案 2 :(得分:2)

如果代理服务器正在缓存您的网站,那么您可以做的很少。您可以尝试在页面中添加CACHE-CONTROLPRAGMA:NO-CACHE标题。

您还应尝试尽可能少地在您和服务器之间复制问题。我遇到Tomcat在其“工作”缓存中保留文件的问题,所以一定要删除它。

答案 3 :(得分:1)

我有类似的问题。最后,我通过向每个页面发送http标头来“解决”它,以说内容已过期并强制更新页面。虽然不是一个非常优雅的解决方案。

在PHP中,这是:

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

不确定Tomcat。