TOMiscaifu 2024-02-05 09:18 采纳率: 0%
浏览 8

SSM框架写WEB 如何让他浏览器每次打开都不去读取缓存 而是显示最新的

请问 用ssm框架 写网页 为什么浏览器打开每次都是读取缓存 ,不会立刻显示更新后得程序
怎么办 我已经在拦截器写了这几句 还是不行 还是每次都要手动清除浏览器缓存

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-02-05 09:20
    关注

    引自免费微信小程序:皆我百晓生

    在SSM(Spring、Spring MVC、MyBatis)框架中,为了让浏览器每次访问都获取最新的内容而不是缓存中的数据,您可以在服务器端和客户端两个层面进行设置:

    服务器端控制 HTTP 缓存头部: 确保您的 Spring MVC 拦截器或控制器返回响应时设置了正确的 HTTP 缓存控制头部。以下是一个示例,在拦截器中添加响应头以禁用缓存:

    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.time.LocalDateTime;
    
    public class NoCacheInterceptor implements HandlerInterceptor {
    
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            // 设置禁止缓存的响应头
            response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1
            response.setHeader("Pragma", "no-cache"); // HTTP 1.0
            response.setDateHeader("Expires", 0); // Proxies
        }
    }
    

    然后需要将这个拦截器注册到 Spring MVC 的配置中,如下所示(假设你正在使用 XML 配置):

    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="
               http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans.xsd
               http://www.springframework.org/schema/mvc
               http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
        <!-- ... 其他配置 ... -->
    
        <mvc:interceptors>
            <bean class="com.example.NoCacheInterceptor"/>
        </mvc:interceptors>
    
    </beans>
    

    客户端提示不使用缓存: 对于动态内容,上述服务器端设置通常足够了。然而,为了进一步确保浏览器不会缓存静态资源(如 CSS、JavaScript 和图片),也可以在它们的URL后面加上版本号或者时间戳。

    例如,在HTML文件中引用JS文件:

    <script src="/static/js/main.js?v=<?= $version ?>"></script>
    

    这里的$version可以是一个实际的版本号或者是当前的时间戳,这样每次修改资源后,由于URL不同,浏览器会认为是新的资源并重新加载。

    总结一下,通过正确设置HTTP响应头以及合理地处理静态资源的版本更新,您可以有效地解决浏览器缓存问题,确保用户每次都能看到最新的网页内容。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月5日

悬赏问题

  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
  • ¥200 C++表格文件处理-悬赏
  • ¥15 Windows Server2016本地登录失败
  • ¥15 复合卡卡号轨道写入芯片卡
  • ¥20 基于MATLAB的TDOA
  • ¥15 为啥输入字体突然变了
  • ¥20 已知坐标,换成MATLAB可以用的数据
  • ¥15 这个python五子棋代码的每一句意思是什么啊
  • ¥15 求一段隐藏代码,隐藏一些内容