亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Cache-Control設置不起效

Cache-Control設置不起效

翻過高山走不出你 2018-08-08 07:10:12
@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,但是瀏覽器中出現這樣的情況。設置的參數并沒有覆蓋,然后緩存也不起效果;請求仍然訪問后臺
查看完整描述

1 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

使用的是SpringMVC,將“json”字符串配置成了一個view Bean。

 <!-- defined view by name -->
    <!-- 將“json”配置成一個view -->
    <bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
        <property name="order" value="4" />
    </bean>
    <bean id="json"
        class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />

然后查看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值

    <bean id="jsonCanCache"
        class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" >
        <property name="disableCaching" value="false"></property>
    </bean>

java代碼中最后返回新的字符串:return "jsonCanCache";


查看完整回答
反對 回復 2018-08-23
  • 1 回答
  • 0 關注
  • 2238 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號