在 Tomcat 中通过 web.xml 配置缓存控制响应头

你可以在你的 Web 应用的 WEB-INF/web.xml 文件中,通过配置过滤器(Filter)来给特定资源(比如 index.html)添加缓存控制的响应头。

示例:配置一个简单的缓存控制过滤器给 index.html

1. 编写一个过滤器类

java 复制代码
java复制
package com.example.filter;

import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class NoCacheFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // 初始化(可不实现)
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        if(response instanceof HttpServletResponse){
            HttpServletResponse httpResp = (HttpServletResponse) response;
            httpResp.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1
            httpResp.setHeader("Pragma", "no-cache"); // HTTP 1.0
            httpResp.setDateHeader("Expires", 0); // Proxies
        }
        chain.doFilter(request, response);
    }

    @Override
    public void destroy() {
        // 销毁(可不实现)
    }
}

2. 在 web.xml 中声明并映射该过滤器

xml 复制代码
xml复制
<filter>
    <filter-name>noCacheFilter</filter-name>
    <filter-class>com.example.filter.NoCacheFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>noCacheFilter</filter-name>
    <!-- 只拦截index.html -->
    <url-pattern>/index.html</url-pattern>
</filter-mapping>

这样,当访问 index.html 时,Tomcat 返回的响应头就带上了禁止缓存的指令,浏览器就会每次重新请求,不会触发 304。

相关推荐
用户219032652735几秒前
部署OpenClaw整合QQ机器人
后端
后端不背锅3 分钟前
服务网格 Istio:微服务架构的下一步
后端
编码忘我4 分钟前
java并发之ThredLocal
后端
Cache技术分享4 分钟前
360. Java IO API - 访问文件系统
前端·后端
花月C7 分钟前
基于WebSocket的 “聊天” 业务设计与实战指南
java·网络·后端·websocket·网络协议
计算机学姐13 分钟前
基于SpringBoot的校园二手交易系统
java·vue.js·spring boot·后端·spring·tomcat·intellij-idea
紫檀香15 分钟前
Alembic入门教程
后端·python
用户5805595021017 分钟前
深入理解 Go defer(下):编译器与runtime视角的实现原理
后端·go
工边页字19 分钟前
为什么 RAG系统里,Embedding成本往往远低于 LLM成本,但很多公司仍然疯狂优化 Embedding?
前端·人工智能·后端
9523619 分钟前
初识多线程
java·开发语言·jvm·后端·学习·多线程