Java Wicket:CSS资源的正确缓存

Java Wicket:CSS资源的正确缓存,java,caching,wicket,cache-control,Java,Caching,Wicket,Cache Control,我们刚从GWT迁移到Wicket 1.4。虽然总体上非常高兴,但对于GWT简化的某些事情,我们仍然有一些学习曲线。其中之一就是资源缓存 如何配置我们应用程序的资源(特别是CSS),使它们不会随每个页面请求一起下载? 我们在某些页面元素上看到一些闪烁,因为没有立即应用样式,可能是因为每次都在下载样式表。我查看了我们的日志,事实上,我在几乎每个页面请求上都看到了样式表请求 我们在HTML文件中直接引用CSS,如下所示: <link href="/css/ag.screen.css" r

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

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

我们在某些页面元素上看到一些闪烁,因为没有立即应用样式,可能是因为每次都在下载样式表。我查看了我们的日志,事实上,我在几乎每个页面请求上都看到了样式表请求

我们在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在他的建议(即通过标题贡献而不是直接在HTML中引用CSS),但这似乎没有帮助(我试着用“curl-I”检查标题)

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

编辑:我刚刚又尝试了一次1.5版本,但目前缺乏文档确实是一个障碍
IndexedParamUrlCodingStrategy
和相关的类都消失了,迁移指南对此几乎没有任何说明


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

既然您要迁移到Wicket,我建议您使用1.5RC4.2。看看关于这个RC的错误报告,我认为下一个可能是1.5.0最终版本。 关于缓存,请参阅此wiki页面:。
它大约是1.5,但它也说明了与1.4的区别。

我和您有相同的需求,需要尽可能多地缓存资源客户端

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


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

您可以从现成的资源中获得指纹。创建缓存指纹的策略可以很容易地修改或更改


有关详细信息,请访问。

要管理非Wicket资源的标题,您可以使用web.xml中WicketFilter前面列出的普通Servlet筛选器。只需检查请求Url和文件扩展名是否为.css/.js/。。。然后在响应中设置缓存头。
关于Wicket 1.5中的**UrlCodingStrategies,请阅读和阅读下面两篇文章。我希望你会更清楚。

只是好奇是什么让你从GWT搬到Wicket?Alex-一长串的事情。最近的几个问题(我脑子里想不出来的)是如何让Facebook/Twitter按钮正常工作、集成Adsense、试图让谷歌为Ajax内容编制索引,以及如何应对新的GWT“编辑器”框架。事实证明,在“传统”框架中编写应用程序要简单得多,然后根据交互内容的需要编写少量Javascript。我多年来一直是GWT的粉丝,所以这对我来说并非易事。计划很快写一篇关于它的博客文章。很有趣。我使用Wicket有几年了,但最终还是偏离了GWT。Wicket很棒,但它并没有像我希望的那样被广泛采用——这意味着要让人们熟悉它更难。无论如何,我想在你写博客的时候看看你的博客。请让我知道。谢谢。Alex,确实很难找到具备Wicket技能的人,但是如果你找一个在J2EE/Servlets方面相当有能力的人,你可以教他们Wicket的基础知识,让他们在几天内就有效率。我不能对GWT说同样的话。实际上,我在发布我的问题之前对1.5RC4做了一次简短的尝试。但是在看到他们是如何在代码库中移动了这么多内容(在我的IDE中只有红色的波浪线)之后,我不想承诺,直到我确定尘埃落定。如果他们离决赛还有那么近,我会再给他们一次机会。谢谢。刚刚又试了一次1.5,但由于缺少文档,特别是关于安装页的文档,所以遇到了问题。我们使用具有非常特殊结构的可书签URL,我不知道如何在没有文档的情况下在1.5中实现这一点。我发现可书签URL也存在同样的问题。输出现在使用查询参数name1=value1&name2=value2,而不是1.4.x表单/name1/value1/name2/value2。我们有数百个网站,其中包含许多使用1.4“目录”样式结构的页面链接。更改查询参数结构将破坏web.Sweet上的许多现有链接。看来我没有深入挖掘Stefan的网站。现在试一试。谢谢