3

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

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

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

4

2 回答 2

1

最可靠的方法是告诉浏览器重新加载所有 css 和 javascript 资源而忽略缓存,为此,您应该更改 css 和 javascript 资源的名称,以便浏览器知道它需要重新加载它们。

虽然每次在生产环境中部署新构建时重命名所有 css 和 javascript 资源可能是乏味/不切实际的任务,但您可以使用

用户界面性能插件

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

此外,该插件还可以为您提供许多其他功能,这些功能可能会帮助您提高 Web 应用程序的速度。有关插件的更多详细功能,请单击此处

希望有帮助。

于 2012-04-08T23:49:21.743 回答
0

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

缓存资源插件与 UI 性能类似,它用特殊的基于哈希的链接替换所有静态内容链接。比 UI 性能更好的是链接基于文件内容,因此如果静态项的内容没有更改,它们不会更新。这很棒,因为您的用户不会被迫重新下载实际上没有更改的文件。

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

  • 添加<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 文件。

于 2012-04-09T03:47:51.993 回答