我有一个用 Struts/Tiles/JSP 编写的应用程序,我正在向其中添加一个 GWT 应用程序。我的应用程序的非 GWT 部分通过实际写出带有从我的 svn 存储库中获取的版本号的 css 文件来处理 css 缓存,例如“styles.css?svnbuild=12345”。这样我就可以告诉浏览器永远缓存这些 css 文件,当我部署新版本时,我的所有用户都会立即下载它。
现在我将继续使用 GWT 应用程序,我喜欢它使用“longmd5sum.cache.css”作为文件名的方式,这样我仍然可以告诉浏览器永远缓存它。问题是与我的主题关联的 css 文件,如“gwt-standard.css”,没有强名称,也没有附加我的 svnbuild 参数。每当我部署我的应用程序的新版本时,用户仍然看到旧版本的 css,这使得它看起来不对。
有没有人找到处理 gwt 主题 css 文件缓存的最佳实践?有什么方法可以在将 css 附加到文档时附加 svnbuild 参数或类似的东西?
最佳答案
好的。因此,在我发布这篇文章之后,我深入研究了 GWT 源代码并找到了一些关于创建 GWT 自定义链接器的链接。
http://development.lombardi.com/?p=29
http://code.google.com/webtoolkit/doc/1.6/DevGuideOrganizingProjects.html
这是我用自己的链接器解决它的方法。首先,我创建了一个扩展标准 IFrameLinker 的链接器类:
@LinkerOrder(LinkerOrder.Order.PRIMARY)
public class MyLinker extends IFrameLinker {
protected String generateStylesheetInjector(String stylesheetUrl) {
stylesheetUrl = stylesheetUrl + "?buildtime=" + System.currentTimeMillis();
return super.generateStylesheetInjector(stylesheetUrl);
}
}
之后,只需告诉您的模块使用您的自定义链接器即可。在您的 module.gwt.xml 文件中:
<module>
<define-linker name="mylinker" class="com.company.gwt.core.linker.MyLinker" />
<add-linker name="mylinker" />
</module>
刚刚尝试了一下,现在在我的 nocache.js 文件中,它会在我每次编译时输出一个新的时间戳。我的用户可以永久缓存 css 文件,每当我部署新版本的应用程序时,他们都会自动下载一个新文件。
关于css - 如何处理 GWT 主题 CSS 文件的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2053531/