编辑:我在Internet Explorer 9上进行了测试,但我认为之前的版本也有同样的问题。
编辑2:这个问题只发生在css和javascript包含文件中。
最可靠的方法是告诉浏览器重新加载所有CSS和JavaScript资源,忽略缓存。为此,您应更改CSS和JavaScript资源的名称,以便浏览器知道它需要重新加载它们。
尽管每次在生产环境上部署新版本时重命名所有CSS和JavaScript资源可能是繁琐/不切实际的任务,但您可以使用
ui-performance-plugin
来完成此任务。如果正确配置了该插件,它将确保每当您创建新的WAR文件时,它都会将当前版本号从存储库附加到文件名中,因此文件名会更改。这种方法的限制是您必须使用插件的tablib更新gsp中对CSS和JavaScript文件的所有引用,而不是直接引用(以便在重命名文件时也替换gsp文件中相应的引用)。
此外,此插件还可以为您提供许多其他功能,这些功能可能有助于提高Web应用程序的速度。有关插件的更详细功能,请单击此处。
希望这有所帮助。
一个更现代的答案类似于Bala上面的是使用Resources插件(默认包含在Grails 2.0+中,并作为插件提供给Grails 1.3+)与Cached Resources插件相结合。
Cached Resources插件与UI Performance做了类似的事情,它用特殊的基于哈希值的链接替换所有静态内容链接。比UI Performance更好的是,这些链接基于文件内容,因此如果静态项的内容没有更改,它们就不会被更新。这很棒,因为您的用户不会被迫重新下载实际上没有更改的文件。
Resources插件允许您将所有资源定义为模块-这是一种非常强大的描述应用程序中使用的CSS、图像和JavaScript的方式。手册写得非常好,可以帮助您入门。它需要几个步骤:
<head>
标签中添加 <r:layoutResources/>
,并且在结束的 </body>
标签之前添加。<link/>
、<script/>
和 <img/>
标签替换为 <r:require/>
、<r:script/>
和 <r:img/>
等效标签。ApplicationResources.groovy
文件中,并将它们设置为可重用模块。实际上,切换非常快速。一旦您完成了切换,您就能够利用其他插件,例如 Zipped Resources(启用 GZip 压缩)和 YUI Minify Resources,它可以压缩 CSS 和 JS 文件。