css - 如何处理 GWT 主题 CSS 文件的缓存

标签 css gwt caching themes

我有一个用 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/

相关文章:

gwt - 在 RPC 期间添加进度条

java - 在 GWT 中编程时使用 OOP?

php - 您应该在 PHP 中缓存 MySQL 连接吗?

caching - 内容水印

CSS3 转换导致文本在 Safari 和 Firefox Mac Yosemite 中闪烁

javascript - fadeOut() 父元素回来

gwtbootstrap 始终适用于所有元素

c# - 如何清除 WPF 应用程序中的 WebBrowser 缓存?

html - 使用 CSS 裁剪和拉伸(stretch)图像以填充页面

javascript - 如何在 javascript 中为背景位置创建变量?