当前位置: 首页 > 面试题库 >

如何使用JSF 2 h:outputStylesheet实现“ CSS版本控制”(以解决缓存问题)?

谈禄
2023-03-14
问题内容

我开始使用JSF2,所以我想尝试一下h:outputStylesheet。它工作正常,但随后我尝试应用“模式”或在请求中添加查询字符串的技巧,该请求字符串随文件版本的变化而强制浏览器获取更改。

不幸的是我无法做到这一点。实际上,当使用该标记时,它不会生成简单的URL,而是会生成一个已经具有查询字符串的经过计算的URL。我在规范和此处都发现了有关JSF
2中资源版本控制的一些信息,但它似乎是指资源的多个版本,这不是我所需要的。

当然,我总是可以回到不使用新标签的状态。但我想在这里分享以供讨论。

更新1-一些示例:

我尝试过的是这样的:

<h:outputStylesheet library="css" name="estilo.css?v=1" target="head"/>

呈现为:

<link type="text/css" rel="stylesheet" href="RES_NOT_FOUND" />

颇具描述性。;-)

我试图得到的是这样的:

<link rel="stylesheet" type="text/css" href="../css/estilo.css?v=1"/>

使用JSP,我曾经这样写过:

<link rel="stylesheet" type="text/css"
 href="<c:url value='/css/estilo.css?v=${initParam.version}'/>"/>

问题答案:

面对同样的挑战,我最终扩展javax.faces.application.ResourceHandlerWrapper andjavax.faces.application.ResourceWrapper了将“&v =xyz”附加到的结果中ResourceWrapper#getRequestString()

我看到了Primefaces和Openfaces实现的这种解决方案。只是看看

org.primefaces.application.PrimeResourceHandler#createResource(String resourceName, String libraryName)

org.primefaces.application.PrimeResource#getRequestPath()

在这里可用。

不要忘记将实现添加到faces-config.xml:

<application>
  <resource-handler>your.package.YourResourceHandlerWrapper</resource-handler>
</application>


 类似资料:
  • 本文向大家介绍如何解决 Redis 缓存穿透和缓存雪崩问题?相关面试题,主要包含被问及如何解决 Redis 缓存穿透和缓存雪崩问题?时的应答技巧和注意事项,需要的朋友参考一下 缓存雪崩: 由于缓存层承载着大量请求,有效地 保护了存储层,但是如果缓存层由于某些原因不能提供服务,比如 Redis 节点挂掉了,热点 key 全部失效了,在这些情况下,所有的请求都会直接请求到数据库,可能会造成数据库宕机的

  • Unix was not designed to stop you from doing stupid things, because that would also stop you from doing clever things. — Doug Gwyn 你曾经遇到过误删除了某些文件而又希望恢复的情形吧? 本书中提及的最重要的技巧就是将 Puppet 的 配置清单(manifests)纳入像

  • Creative Cloud 可以保留一份您对文件所做的每个更改的副本,并通过 Creative Cloud 桌面应用程序或 Creative Cloud Assets 网站进行同步。Adobe 会在服务器上将这些过去的版本保留十天时间。如果您意外修改了某个文件,或者协作者覆盖了您所执行的操作,只需点击几下即可将其恢复。 有关版本控制的详细信息,请参阅以下常见问题解答。 如何查看过去的文件版本?

  • 使用 rax-plugin-pwa 插件,可以方便快捷的使用 Service Worker 控制缓存,以获得更快的加载速度。 首先,安装 build-plugin-rax-pwa 插件依赖: $ npm install build-plugin-rax-pwa --save 在工程配置 build.json 中添加 pwa 插件并配置缓存目标: { "plugins": [ [

  • 问题内容: 最少使用(LFU)是一种高速缓存算法,用于管理计算机内的内存。此方法的标准特性涉及系统跟踪内存中块被引用的次数。当缓存已满且需要更多空间时,系统将以最低参考频率清除项目。 例如,用Java来实现最近使用的对象缓存的最佳方法是什么? 我已经使用LinkedHashMap实现了一个(通过保持访问对象的次数),但是我很好奇是否有任何新的并发集合会更好。 考虑这种情况:假设缓存已满,我们需要为

  • 我正在将使用JSP的5年前的Spring MVC应用程序移植到Spring Boot。因此,根据http://docs.spring.io/spring-boot/docs/current-snapshot/reference/htmlsingle/#boot-features-jsp-limittings中的示例,我使用了“war”打包。 我很乐意增加tomcat缓存,但是我没有找到在Sprin