繁体   English   中英

Wicket:正确缓存 CSS 资源

[英]Wicket: proper caching of CSS resources

我们刚刚从 GWT 迁移到 Wicket 1.4。 虽然总的来说很高兴,但对于 GWT 简化的某些事情,我们仍然有一些学习曲线。 其中之一是资源缓存。

如何配置我们应用程序的资源(尤其是 CSS),以便它们不会随每个页面请求一起下载?

我们在某些页面元素上看到一些闪烁,因为 styles 没有立即应用,大概是因为每次都在下载样式表。 我跟踪了我们的日志,实际上,我几乎在每个页面请求中都看到了对样式表的请求。

我们在 HTML 文件中直接引用 CSS,如下所示:

    <link href="/css/ag.screen.css" rel="stylesheet" type="text/css">
    <link href="/css/ag.base.css" rel="stylesheet" type="text/css">

我不确定这是否重要,但我们所有的页面都安装了IndexedParamUrlCodingStrategy ,因为我们需要它们既可收藏又具有特定的 URL 结构。

我尝试实现 Stefan Fußenegger 在他的博客中建议的内容(即通过 header 贡献引用 CSS,而不是在 HTML 中直接尝试),但似乎没有使用“-curl help”检查标题。

在 Wicket 1.4 中是否有为资源设置 Cache-Control 或 Expiration 标头的标准方法? 值得为此迁移到 Wicket 1.5 吗? (我犹豫是否这样做,因为它还没有正式发布)。

编辑:我刚刚又尝试了 1.5,但目前缺乏文档确实是一个障碍。 IndexedParamUrlCodingStrategy和相关类都没有了,迁移指南几乎没有什么可说的。

编辑 2:我刚刚注意到一些非常奇怪的事情——当我通过直接输入 URL 或单击 BookmarkablePageLink 到达我的一个页面时,该页面上引用的资源(CSS、图像等)似乎被缓存了(我在我的日志中看不到他们的请求)。 但是如果我通过表单提交到达同一页面,所有资源都会再次下载。 为什么表单提交会导致页面上引用的资源被重新下载?

由于您要迁移到 Wicket,我建议您使用 1.5RC4.2。 查看有关此 RC 的错误报告,我认为下一个可能是 1.5.0Final。 关于缓存,请参阅此 wiki 页面: https://cwiki.apache.org/WICKET/caching-in-wicket-15.html 它大约是 1.5,但它也说明了与 1.4 的区别。

我和你有同样的需求,我越需要缓存资源客户端。

现在我被困在 1.4.x 下,我找到了适合我的解决方案。 我使用 Stefan Fußenegger 写的很棒的图书馆,他在这里提供。 实现非常简单,我在生产模式下使用 StaticResourceVersionProvider。 到目前为止我没有任何问题(现在对我的客户来说坚如磐石)。

如果您需要有关我如何使用此解决方案的详细信息,请不要犹豫。

您可以获得开箱即用的资源指纹。 创建缓存指纹的策略可以很容易地修改或更改。

Wicket wiki 页面上提供了有关 1.5 中资源缓存如何工作的更多信息。

要管理非 Wicket 资源的标头,您可以使用 web.xml 中 WicketFilter 之前列出的普通 Servlet 过滤器。 只需检查请求 Url ,如果文件扩展名为 .css/.js/... 则只需在响应中设置缓存标头。 关于 Wicket 1.5 中的 **UrlCodingStrategies,请阅读http://wicketinaction.com/2011/07/wicket-1-5-request-mapper/以及接下来的两篇文章。 我希望你会更清楚。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM