我正在使用jboss服务器7.1.1来部署一个java web应用程序。对于js,css,字体文件,浏览器缓存没有随着新的更改而更新。每次我们都坚持让客户端清除浏览器中的缓存,以使新的更改生效。
有没有我可以配置的任何配置,以便当部署新代码时,我可以引导所有请求提供更新的文件?
通过搜索这个主题,我发现,我们可以编写自定义方法来设置电子标签值。有什么配置可以帮助我这样做吗?
大多数时候我们都是热部署(在jboss管理控制台中上传war文件,不需要停机)。所以我怀疑在热部署期间是否会更新自定义的电子标签,因为我们在服务器启动时配置了它。
或者是否有办法在Web应用程序的web.xml文件中处理它?
我需要一个解决方案,可以使用浏览器缓存,直到下一个部署发生的js,css和字体文件。我不知道什么设置“过期”头。因为我们没有固定的部署周期。
如果您需要更多信息以得出解决方案,请告诉我。
3条答案
按热度按时间pinkon5k1#
由于您正在使用jboss部署应用程序,因此我猜您的页面不是静态的。
如果你不想给
Cache-Control
带来麻烦,一个简单的解决方案就是在每个资源url后面附加一个动态的“缓存bust”。所以你的资源url(例如在.jsp
中)应该是这样的:现在,您需要一个地方来为每个部署/重新部署生成一个新的
cacheBust
值。启动时加载的
HttpServlet
:或者是
ServletContextListener
jq6vz3qz2#
你希望浏览器缓存很少更改的文件。但有时它们 * 确实 * 更改了,然后你想触发浏览器缓存清除。比如:
但是,可靠的解决方案是在服务器端使用版本:
vyswwuz23#
根据this post,您可以通过更改响应头来禁用缓存。
您还可以将查询字符串添加到链接(请参见this post)。例如,您可以最初使用
./design.css?v=1
,而在下次更新design.css
时将引用更改为./design.css?v=1
。您可以动态更改编号