首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Tomcat8.5 web.xml中添加缓存控制、Pragma和expires?

在Tomcat8.5的web.xml中,可以通过添加以下配置来实现缓存控制、Pragma和expires:

代码语言:txt
复制
<web-app>
  ...
  <filter>
    <filter-name>CacheControlFilter</filter-name>
    <filter-class>com.example.CacheControlFilter</filter-class>
  </filter>
  
  <filter-mapping>
    <filter-name>CacheControlFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

这里我们通过添加一个名为"CacheControlFilter"的过滤器来控制缓存。然后,在项目中创建一个名为"CacheControlFilter"的Java类,该类实现了javax.servlet.Filter接口,并在doFilter方法中添加以下代码:

代码语言:txt
复制
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

public class CacheControlFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletResponse httpServletResponse = (HttpServletResponse) response;

        // 设置缓存控制
        httpServletResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
        httpServletResponse.setHeader("Pragma", "no-cache");
        httpServletResponse.setHeader("Expires", "0");

        chain.doFilter(request, httpServletResponse);
    }
}

上述代码中,我们通过设置响应头的"Cache-Control"、"Pragma"和"Expires"属性来实现缓存控制。具体含义如下:

  • Cache-Control: 控制缓存行为的指令。"no-cache, no-store, must-revalidate"指示不缓存响应内容。
  • Pragma: 包含实现特定的指令,用于向原始服务器传达指令或指定需要遵守的行为。"no-cache"指示不缓存响应内容。
  • Expires: 指定响应的过期时间。"0"表示立即过期,不缓存响应内容。

这样配置后,Tomcat8.5会在每个响应中包含上述缓存控制的头信息,告诉浏览器不缓存响应内容。从而确保每次请求都会从服务器获取最新的数据。

腾讯云相关产品中,可以使用腾讯云CDN(内容分发网络)来进一步优化缓存效果。腾讯云CDN能够将静态资源缓存在全球分布的节点上,提供更快的访问速度和更好的用户体验。您可以通过腾讯云CDN的控制台来配置缓存规则,具体操作可以参考腾讯云CDN产品文档:腾讯云CDN

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • IE内核浏览器的404页面问题IE自动缓存引发的问题

    ,应用http 1.1 'Pragma': 'no-cache', //浏览器和缓存服务器都不应该缓存页面信息,应用到http 1.0 http 1.1 'Expires':...(HTTP1.1),Pragma(HTTP1.0),last-Modified,Expires等。...Pragma HTTP1.0通过Pragma 控制页面缓存,可以设置:Pragma或no-cache。不过这个值不这么保险,通常还加上Expires置为0来达到目的。...Cache-Control HTTP1.1启用Cache-Control 来控制页面的缓存与否,这里介绍几个常用的参数: no-cache,浏览器和缓存服务器都不应该缓存页面信息; public,浏览器和缓存服务器都可以缓存页面信息...Expires 过时期限值,指浏览器或缓存服务器在该时间点后必须从真正的服务器获取新的页面信息,GMT时间格式。

    1.7K50

    【前端 · 面试 】HTTP 总结(八)—— HTTP 强缓存

    Memory Cache 缓存资源在内存,浏览器(或页面标签)关闭后内存缓存就会被释放,重新打开页面取不到该缓存缓存存放的位置是由浏览器控制的。...属性 是否强缓存由以下 3 个 Header 属性共同来控制Expires Cache-Control Pragma Expires Expires 的值是一个 HTTP 日期,当服务器返回响应时,...在浏览器发起请求时,会根据系统时间 Expires 的值进行比较,如果系统时间超过了 Expires 的值,缓存失效,会继续从服务器获取资源,比如: [image-20210808211410000]...Pragma Pragma 只有一个属性值,就是 no-cache ,效果 Cache-Control 的 no-cache 一致,不使用强缓存,需要与服务器验证缓存是否新鲜,在 3 个头部属性的优先级最高...总结 Expires Pragma 是 HTTP 1.0的产物,Cache-Control是 HTTP 1.1 的产物。

    39710

    charles配置客户端请求全部不走缓存

    charles配置客户端请求全部不走缓存,通过配置charles No caching setting(无缓存)   No caching setting 选择开启,并可以针对单独的请求 开启。...简单介绍: 无缓存工具阻止客户端应用程序(Web浏览器)缓存任何资源。...如果全部禁止:即选中 Enable No Caching,不勾选only for selected locations,同样的请求,被请求一次就会在左侧边栏显示出来一次) No caching的运行原理 无缓存工具通过操纵控制缓存响应的...HTTP头来防止缓存; 从请求删除If-Modified-SinceIf-None-Match头,添加Pragma:no-cacheCache-control:no-cache。...从响应删除Expires,Last-ModifiedETag标头,添加Expires:0Cache-Control: no-cache。

    1.1K30

    浏览器缓存知识小结及应用

    ,先从缓存寻找,找到这个资源后,拿出它的Expires跟当前的请求时间比较,如果请求时间在Expires指定的时间之前,就能命中缓存,否则就不行。...这两个header可以只启用一个,也可以同时启用,当response headerExpiresCache-Control同时存在时,Cache-Control优先级高于Expires: ?...强缓存的管理 前面介绍的是强缓存的原理,在实际应用我们会碰到需要强缓存的场景不需要强缓存的场景,通常有2种方式来设置是否启用强缓存: 1)通过代码的方式,在web服务器返回的响应添加Expires...Cache-Control Header; 2)通过配置web服务器的方式,让web服务器在响应资源的时候统一添加ExpiresCache-Control Header。...来控制页面的缓存与否,public:浏览器和缓存服务器都可以缓存页面信息; response.setHeader("Pragma", "Pragma"); //Pragma:设置页面是否缓存,为Pragma

    70830

    理解HTTP协议

    > 浏览器会自动发出请求 4.对比进行讲解消息头 请求消息头:一个请求行,多个消息头, 一个空行 请求行:请求类型(GET/POST) 请求资源 HTTP版本 (...POST提交数据在主体内容不可见,所以安全 消息头: Accept:告知服务器,浏览器可接受的MIME类型 (Multipurpose Internet Mail Extensation) 多用途互联网邮件扩展类型...文件系统文件类型用文件的扩展名来区分 MIME类型由大类型/小类型组成的.比如text/html text/css text/javascript image/bmp image/jpeg (Tomcat conf/web.xml...单位是秒 *Content-Disposition: attachment;filename=aaa.zip指示客户端下载文件 *Expires: -1清理缓存 *Cache-Control:...no-cache (1.1) 没有缓存 *Pragma: no-cache (1.0) 没有缓存 //response.setHeader("*Expires","-1"); **Set-Cookie

    35620

    网页性能优化浅谈与实践

    Cache-Control | Pragma 规则 描述: 缓存头的两种主要类型分别是cache -control expires,它们定义资源的缓存特征。...从缓存控制缓存校验两个角度来看http的缓存 1.缓存控制控制缓存的开关,用于标识请求或访问是否开启了缓存,使用了哪种缓存方式。...通过指定某些类型的文件的到期时间来启用缓存,该时间告诉浏览器在向服务器请求新副本之前使用缓存资源的时间; Pragma有两个字段PragmaExpires。...如果一个报文中同时出现PragmaCache-Control时,以Pragma为准。同时出现Cache-ControlExpires时,以Cache-Control为准。...即优先级从高到低是 Pragma -> Cache-Control -> Expires; 基础示例: # Apache 的 .htaccess 配置缓存控制到期资源 <filesMatch

    59820

    HTTP缓存机制与Cookie

    缓存服务器端的数据的优点 缓解服务器端的资源消耗运行压力,提升服务器端的整体性能。...这样热门的资源就会被重复使用,减少网络拥堵与延迟 Cache-Control:public 缓存控制 Cache-control头 HTTP/1.1定义的Cache-Control头用来区分对缓存机制的支持情况...头是HTTP/1.0标准定义的一个header属性,请求包含Pragma的效果跟在头信息定义“Cache-Control:no-cache”相同。...Pragma: no-cache ExpiresExpires响应头包含日期/肘间,即在此时候之后,响应过期。 无效的日期,比如0代表着过去的日期,即该资源已经过期。...例如,如果设置Domain=wolongxueyuan.com,则(Cookie也包含在子域名developer.wolongxueyuan.com).

    1.2K20

    Web缓存教程

    所有缓存都有一系列配置来决定什么时候从缓存获取页面,一些规则是在协议HTTP 1.01.1设置,一些是由缓存的管理员设置,或者是浏览器缓存的用户,或者是代理缓存的管理者。...而只有HTTP协议的头部才会让你更有力地控制浏览器缓存代理缓存,它们都不必打开文档阅读Html,通常这些HTTP协议头部信息是由Web服务器产生,比如Nginx或Tomcat,依据你的服务器,你能在某种程度上控制它们...很多人喜欢在HTTP头部设置Pragma: no-cache以避免缓存,这并不总是有效,HTTP规定并没有任何有关Pragma响应头部的规定,Pragma请求头正在讨论。...使用HTTP头中Expires进行缓存刷新,它是控制缓存的基本手段,它告诉缓存缓存的内容在多次时间以后就失效了,在失效以后,缓存会再次检查源服务器看看该页面是否已经被改变。...验证器非常重要,如果没有任何有效期信息Expires或Cache-Control,也没有验证器,那么缓存就不会缓存任何内容。

    92910

    Web 开发人员需知的 Web 缓存知识

    但是,根据你使用的服务器,你可以在某种程度上进行控制。在下文中:你将看到一些有趣的HTTP头信息,以及如何在你的站点 上应用部署这些特性。...Pragma HTTP头信息(以及为什么不起作用) 很多人认为在HTTP头信息设置了Pragma: no-cache后会让内容无法被缓存。...但事实并非如此:HTTP的规范 ,响应型头信息没有任何关于Pragma属性的说明,只说明了请求头信息(浏览器发送给服务器的头信息)Pragma属性。...使用Expires HTTP头信息控制不过期 Expires HTTP头是控制缓存的基本手段,Expires的中文意思是“有效期”,显然,就是告诉浏览器缓存的有效期。...终端使用者可以在telnet程序输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可 以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名密码来登录服务器。

    54520

    Http响应头里Cache-Control:no-cache、max-age=””no-store

    这对于需要确认认证应用很有用(可以public结合使用),或者严格要求使用最新数据 的应用(不惜牺牲使用缓存的所有好处) 通俗解释:浏览器通知服务器,本地没有缓存数据 //==============...拓展: HTTP1.0 HTTP1.0通过Pragma 控制页面缓存,通常设置的值为no- cache,不过这个值不这么保险,通常还加上Expires置为0来达到目的。...但是如我们刻意需要浏览器或缓存服务器缓存住我们的页面这个值则要设置为 Pragma。...HTTP1.1 HTTP1.1启用Cache-Control 来控制页面的缓存与否,这里介绍几个常用的参数: no-cache,浏览器和缓存服务器都不应该缓存页面信息; public,浏览器和缓存服务器都可以缓存页面信息...,其优先级也比较高,当别的字段(Expires)一起用时,会覆盖其他字段。

    4.8K00

    HTTP 缓存头部 - 完全指南

    HTTP 规范允许服务器发送多个不同的 Cache-Control 指令,用以控制身处诸如CDN的中间人缓存,浏览器如何(以及何时)缓存个别的响应: Cache-control: private, max-age...这个指令是明确针对中间人缓存的 CDN 的。当这个指令出现在头部时,会覆盖掉 `max-age` `expires` 的设置。...`Cache-Control` 是作为 HTTP/1.1 标准的一部分定义的,用来接替之前的头部信息( `expires`)来规定响应的缓存策略。...边缘服务器(edge server, 译注:专门负责缓存、防火墙、负载均衡等的第一层服务器;其后是提供web服务的第二层提供数据库的第三层)创建并返回特制的 token,存放在 ETag 头部域中,...ETag 头部域是用来控制资源新鲜度有效性的现代机制。

    1.2K20

    图解 HTTP 缓存

    状态码是 200 ,在 Chrome ,强缓存又分为 Disk Cache(存放在硬盘 Memory Cache(存放在内存),存放的位置是由浏览器控制的。...是否强缓存Expires、Cache-Control Pragma 3 个 Header 属性共同来控制。...○ Expires Expires 的值是一个 HTTP 日期,在浏览器发起请求时,会根据系统时间 Expires 的值进行比较,如果系统时间超过了 Expires 的值,缓存失效。...由于系统时间进行比较,所以当系统时间和服务器时间不一致的时候,会有缓存有效期不准的问题。Expires 的优先级在三个 Header 属性是最低的。...+ '/public'), options)); app.listen(3000); 第一次加载,页面会向服务器请求数据,并在 Response Header 添加 Cache-Control ,过期时间为

    75320
    领券