Wicket:正确缓存CSS资源

如何解决Wicket:正确缓存CSS资源

| 我们刚刚从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\">
我不确定是否很重要,但是我们所有的页面都安装了ѭ1mounted,因为我们需要它们既可标记为书签,又具有特定的URL结构。 我尝试实现StefanFußenegger在他的博客中建议的内容(即通过标头贡献而不是直接在HTML中引用CSS),但这似乎没有帮助(我尝试使用\“ curl -I \”检查标头) )。 在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以下,并且找到了适合我的解决方案。 我使用了StefanFußenegger所写的出色的图书馆,他在这里提供了图书馆。实现非常简单,我在生产模式下使用了StaticResourceVersionProvider。到目前为止,我还没有任何问题(目前对我的客户来说是坚如磐石)。 如果您需要有关我如何使用此解决方案的详细信息,请不要犹豫。     ,要管理非Wicket资源的标头,可以使用web.xml中在WicketFilter之前列出的普通Servlet Filter。只需检查请求网址,如果文件扩展名是.css / .js / ...,则只需在响应中设置缓存头即可。 关于Wicket 1.5中的** UrlCodingStrategies,请阅读http://wicketinaction.com/2011/07/wicket-1-5-request-mapper/和以下两篇文章。希望对您来说更清楚。     ,您可以立即获得资源上的指纹。创建缓存指纹的策略可以很容易地修改或更改。 Wicket Wiki页面上有更多有关1.5中资源缓存如何工作的信息。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?