gpt4 book ai didi

java - 设置 javascript 文件的版本。 Java EE + Tomcat

转载 作者:行者123 更新时间:2023-11-28 22:41:59 26 4
gpt4 key购买 nike

通过添加对 javascript 和 css 的更新,我想避免强制用户按 Ctrl+F5 来刷新缓存的 js 和 css 文件。

禁用缓存也不是一个选择。

为此,我想像这样向 js 和 css 链接添加版本

< link href="~/CSS/file.css?MY_VERSION" rel="stylesheet" />

理想情况下,版本必须类似于构建日期和时间的构建编号。
但是我怎样才能自动设置呢?

我不想在每次更新后手动更新所有 jsp 文件的这个值。所以问题是

  • maven可以给jsp文件添加构建版本吗?
  • 如果第一点是不可能的,我如何(以及在​​哪里)使用当前日期和时间设置应用程序全局变量?例如,我不能将它放入 servlet 中,因为它是根据每个请求构建的。
  • 执行此操作的最佳做​​法是什么?也许我的做法完全不正确

最佳答案

是的,我们做了类似的事情(对于 css 文件中的图像引用):

<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>maven-replacer-plugin</artifactId>
<version>1.4.1</version>
<executions>
<execution>
<id>anticache</id>
<phase>prepare-package</phase>
<goals>
<goal>replace</goal>
</goals>
<configuration>
<includes>
<include>target/classes/**/*.css</include>
</includes>
<replacements>
<replacement>
<token>anti-cache=anti-cache-parameter</token>
<value>anti-cache=${maven.build.timestamp}</value>
</replacement>
</replacements>
</configuration>
</execution>
</executions>
</plugin>

只需检查文件模式以匹配您的 JS 文件,然后在您的 JS 文件中:

< link href="~/CSS/file.css#anti-cache=anti-cache-parameter" rel="stylesheet" />

请注意,我在这里没有使用请求参数 (?),而是 #。这是为了避免浏览器缓存受到影响,因为使用请求参数,浏览器缓存将卡在文件的每个版本上。另请参阅:Refresh image with a new one at the same url

现在,如前所述,我们使用它,但它也不是理想的解决方案,但我认为不存在理想的解决方案。

另见缓存在不同浏览器中的行为: https://github.com/podlipensky/RefreshButton

关于java - 设置 javascript 文件的版本。 Java EE + Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28473567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com