确保网站更新后Internet Explorer浏览器中的缓存被清除

3
我正在使用Tomcat服务器上的Grails网站。当我更新网站页面时,Firefox会正确应用更新,但是Internet Explorer似乎会一直保留缓存的值,直到我显式地删除临时Internet文件夹。如何确保Internet Explorer用户在网站更新时拥有最新的网页?
编辑:我在Internet Explorer 9上进行了测试,但我认为之前的版本也有同样的问题。
编辑2:这个问题只发生在css和javascript包含文件中。
2个回答

1

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

尽管每次在生产环境上部署新版本时重命名所有CSS和JavaScript资源可能是繁琐/不切实际的任务,但您可以使用

ui-performance-plugin

来完成此任务。如果正确配置了该插件,它将确保每当您创建新的WAR文件时,它都会将当前版本号从存储库附加到文件名中,因此文件名会更改。这种方法的限制是您必须使用插件的tablib更新gsp中对CSS和JavaScript文件的所有引用,而不是直接引用(以便在重命名文件时也替换gsp文件中相应的引用)。

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

希望这有所帮助。


0

一个更现代的答案类似于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/> 等效标签。
  • 更好的做法是将 CSS 和 JavaScript 依赖项移到 ApplicationResources.groovy 文件中,并将它们设置为可重用模块。

实际上,切换非常快速。一旦您完成了切换,您就能够利用其他插件,例如 Zipped Resources(启用 GZip 压缩)和 YUI Minify Resources,它可以压缩 CSS 和 JS 文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接