确保在站点更新时在Internet Explorer上清除网站缓存

时间:2012-04-08 21:43:25

标签: internet-explorer caching tomcat grails

我在Tomcat服务器上运行使用Grails的网站。当我更新网站页面时,Firefox正确应用更新,但Internet Explorer似乎保留缓存的值,直到我明确删除临时Internet文件。当网站更新时,如何确保Internet Explorer用户拥有最新的网页?

编辑:我在Internet Explorer 9上测试过,但我认为以前的版本有同样的问题。

编辑2:问题只发生在css和javascript包含。

2 个答案:

答案 0 :(得分:1)

这是最可靠的方法,它告诉浏览器重新加载所有的css和javascript资源重新忽略缓存,为了做到这一点,你应该更改你的CSS和JavaScript资源的名称,以便浏览器知道它需要重新加载它们。

虽然每次在生产中部署新版本时重命名所有css和javascript资源可能是一项繁琐/不切实际的任务,但您可以使用

  

UI-性能插件

为此目的。它的插件,如果配置正确,确保在创建新的war时,它会将存储库中的当前修订号附加到文件名,因此文件名会被更改。对此的限制将是您必须更新gsp中对css和javascript文件的所有引用,以使用插件的tablib而不是直接包含它们(这样在重命名文件时它也会替换gsp文件中的相应引用)。

此外,此插件还可以为您提供许多其他功能,可以帮助您提高Web应用程序的速度。有关插件click here

的更详细功能

希望有所帮助。

答案 1 :(得分:0)

与Bala类似的更现代的答案是使用Resources插件(默认情况下包含在Grails 2.0+中,可用于Grails 1.3+作为插件)与Cached Resources插件结合使用。

Cached Resources插件与UI Performance类似,它用特殊的基于散列的链接替换所有静态内容链接。比UI性能更好的是链接基于文件内容,因此如果静态项的内容没有改变,则不会更新。这很好,因为您的用户不会被迫重新下载实际没有更改的文件。

Resources插件允许您将所有资源定义为模块 - 这是描述应用程序中使用的CSS,图像和JavaScript的一种非常强大的方法。 manual编写得非常好,可以帮助您入门。它需要几个步骤:

  • 在结束<r:layoutResources/>代码之前的<head>代码中为您的布局添加了</body>
  • 使用<link/><script/><img/>替换所有(或部分)<r:require/><r:script/><r:img/>个标签等同物。
  • 更好的是,将CSS和JavaScript依赖项移动到ApplicationResources.groovy文件中,并将它们设置为可重用的模块。

切换起来非常快,一旦你这样做,你就可以利用其他插件,例如Zipped Resources(启用GZip压缩)和YUI Minify Resources,这会缩小CSS和JS文件。