我在Tomcat服务器上运行使用Grails的网站。当我更新网站页面时,Firefox正确应用更新,但Internet Explorer似乎保留缓存的值,直到我明确删除临时Internet文件。当网站更新时,如何确保Internet Explorer用户拥有最新的网页?
编辑:我在Internet Explorer 9上测试过,但我认为以前的版本有同样的问题。
编辑2:问题只发生在css和javascript包含。
答案 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/>
个标签等同物。ApplicationResources.groovy
文件中,并将它们设置为可重用的模块。切换起来非常快,一旦你这样做,你就可以利用其他插件,例如Zipped Resources(启用GZip压缩)和YUI Minify Resources,这会缩小CSS和JS文件。