【发布时间】:2015-04-12 20:00:44
【问题描述】:
我想最有效地使用静态文件的浏览器缓存,即始终使用缓存的内容,除非文件已更改,在这种情况下获取新内容。
我想将文件的 md5 哈希附加到客户端看到的虚拟文件路径(作为目录,或作为文件名的一部分),以便当文件更改时,客户端认为它是不同的资源。
我知道如何使用 servlet 过滤器来接受包含该虚拟文件路径的请求并去除 md5 哈希,并在目录结构中返回真实文件名。
我是否也可以使用过滤器在输出时更改明显的文件名,以便客户端的浏览器认为它正在请求虚拟文件路径,而不更改我的实际文件的实际名称或目录结构?
例如:
真实文件路径 = /css/1.css
虚拟文件路径 = /static/1234/css/1.css
当文件改变时
真实文件路径 = /css/1.css
虚拟文件路径 = /static/3451/css/1.css
【问题讨论】:
-
你需要重写链接。每当您输出这样的链接时,您都可以调用一个方法来执行此操作。您使用什么技术来生成 HTML?
-
使用jsf和html5。 css、js、图片直接在xhtml中。命令链接和按钮用于控制流向不同的 xhtml 页面
-
JSF 有内置的解决方案,并通过资源处理程序拥有可定制的方法。为什么在标题/问题中“使用 servlet”和“使用 servlet 过滤器”?请编辑和澄清。当前形式的问题与 JSF 无关。如果您实际上没有通过
<h:outputStylesheet>和朋友将它们用作 JSF 资源,那肯定不会。 -
知道了 - 我想我的标题让这个问题感到困惑。使用 servlet/servlet 过滤器是我目前关于如何解决问题的想法——我应该从标题中删除它。应用程序运行的技术是 jsf、java 8、maven、html5、mongoDb。我正在此技术堆栈中寻找解决方案。
标签: java javascript css maven jakarta-ee