Cache-Control设置不起效

@RequestMapping("pic.html")    public String pic(ModelMap map, HttpServletResponse response) {
        response.addHeader("Cache-Control", "public,max-age=310");        long expires = new Date().getTime() + 10 * 60 * 1000;
        response.setDateHeader("Expires", expires);
        response.setHeader("Etag", "12345");
        
        map.put("test", "testPic");        return "json";
    }

现在我需要做浏览器缓存:请求一个url时,如果有缓存,就不访问后台

像这样,我设置Cache-Control,但是浏览器中出现这样的情况。

https://img1.mukewang.com/5b7e1d750001fa2803780164.jpg

设置的参数并没有覆盖,然后缓存也不起效果;请求仍然访问后台


翻过高山走不出你
浏览 2206回答 1
1回答

倚天杖

使用的是SpringMVC,将“json”字符串配置成了一个view Bean。&nbsp;<!--&nbsp;defined&nbsp;view&nbsp;by&nbsp;name&nbsp;--> &nbsp;&nbsp;&nbsp;&nbsp;<!--&nbsp;将“json”配置成一个view&nbsp;--> &nbsp;&nbsp;&nbsp;&nbsp;<bean&nbsp;class="org.springframework.web.servlet.view.BeanNameViewResolver"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<property&nbsp;name="order"&nbsp;value="4"&nbsp;/> &nbsp;&nbsp;&nbsp;&nbsp;</bean> &nbsp;&nbsp;&nbsp;&nbsp;<bean&nbsp;id="json" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"&nbsp;/>然后查看MappingJackson2JsonView源代码发现,父类中有个参数disableCaching默认为ture。注解:Default is {@code true}, which will prevent the client from caching the generated JSON (这将阻止客户端缓存生成的JSON)所以找到了设置Cache-Control:no-cache, no-store, max-age=0的地方修改方法:增加一个bean配置,修改disableCaching值&nbsp;&nbsp;&nbsp;&nbsp;<bean&nbsp;id="jsonCanCache" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"&nbsp;> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<property&nbsp;name="disableCaching"&nbsp;value="false"></property> &nbsp;&nbsp;&nbsp;&nbsp;</bean>java代码中最后返回新的字符串:return "jsonCanCache";
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java