2010-01-12 135 views
5

我有一个相当麻烦的问题,我还没有找到一个好的解决方案。防止浏览器缓存在Web应用程序升级

我允许通过浏览器缓存所有应用程序静态文件(JS,CSS和图像)以提高性能。

问题是,当我进行升级时,用户仍然使用缓存中的旧版本,这往往会破坏应用程序,并且需要每次清理缓存以解决问题。

是否有任何好的多浏览器方法,仍然允许缓存文件,但可以强制在需要时重新加载它们?

感谢您的任何信息。

回答

7

附加somethign作为参数,例如, myresource.css?version=1。该文件将被正确地加密,这是强制重新加载缓存的一个技巧。您只需要动态生成html页面。

+0

+1。这就是.Net在使用嵌入式Web资源时所做的。 – David 2010-01-12 17:07:33

+0

这个问题似乎涵盖了更多细节的主题:http://stackoverflow.com/questions/118884/what-is-an-elegant-way-to-force-browsers-to-reload-cached-css-js-文件 – ewernli 2010-01-12 17:10:23

+0

嗨。 感谢您的链接,它似乎给了一个非常透彻的解释。 另外,为了理解你自己的解释,是否需要将版本参数永久保存在链接中,然后每次升级版本时都会增加(如在发布的链接中)? 再次感谢。 – SyBer 2010-01-12 17:39:46

0

我听说过要在用户缓存的文件名中使用版本号,但我不能说与其他选项相比“好”。

0

选项我能想到的:

  • 减少缓存TTL
  • 存放在版本目录树中的缓存的东西,如:
    • /app/1.2/css/
    • /app/1.2/js/
相关问题