0
点赞
收藏
分享

微信扫一扫

java 如何确保js 不被缓存

在Java中确保JavaScript不被缓存,可以通过以下几种方式来实现:

1. 添加时间戳或随机数(Cache Buster)

在加载JavaScript文件时,附加一个时间戳或随机数参数,使浏览器认为这是一个新的文件。例如:

<script src="your-script.js?v=<%= System.currentTimeMillis() %>"></script>

这里的 System.currentTimeMillis() 会生成当前时间的毫秒数,每次加载页面时都不同,从而强制浏览器重新加载这个文件。

2. 设置HTTP响应头

在Java的后端(如Servlet)中设置响应头,以禁用缓存。例如:

response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0");

这将告诉浏览器不要缓存这个请求的响应。

3. 配置Web服务器

如果你使用的是Tomcat、Jetty等服务器,可以通过修改配置文件(如 web.xml)来控制缓存策略。比如,在 web.xml 中添加一个过滤器:

<filter>
    <filter-name>NoCacheFilter</filter-name>
    <filter-class>com.example.NoCacheFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>NoCacheFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

然后在 NoCacheFilter 类中设置响应头:

public class NoCacheFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        httpResponse.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0");
        httpResponse.setHeader("Pragma", "no-cache");
        httpResponse.setHeader("Expires", "0");
        chain.doFilter(request, response);
    }
}

4. 在前端HTML中使用缓存控制头

如果使用的是动态模板引擎(如JSP、Thymeleaf),可以在页面中动态生成JS路径,加上时间戳或版本号来控制缓存。

以上这些方法可以确保JavaScript文件在每次请求时不被缓存,从而让浏览器总是加载最新版本。

java 如何确保js 不被缓存_缓存

举报

相关推荐

0 条评论