[問題] 避免瀏覽器快取靜態資源

作者: lueichun (no anonymous)   2018-08-16 14:58:10
我使用Spring 4來寫一些簡單的範例,
然後想加入「避免瀏覽器快取」的功能,
一開始是在jsp檔內加入
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
<META HTTP-EQUIV="EXPIRES" CONTENT="0">
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
沒用
後來在靜態資源的url尾端加上版本號:
<link href="<c:url value='/resources/core/css/bootstrap.min.css?1'/>"
rel="stylesheet" />
<script src="<c:url
value='/resources/core/js/jquery.1.10.2.min.js?1'/>"></script>
還是沒用
接著在controller的方法內加入:
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0");
仍然沒用
最後是在Spring設定檔加入webContentInterceptor才成功避免瀏覽器快取資源
請問為什麼前3種方法都沒用,一定要用Spring自帶的物件才行呢?
作者: Jichang (C.C.Lemon)   2018-08-18 08:48:00
推一下 ss 大大解釋的真清楚 …
作者: ssccg (23)   2018-08-16 20:42:00
你要避免被快取的是資源檔,那跟jsp和controller就沒關係url加版本號也不是像你加個1,通常是加亂數或時間吧...最後那個dispatchServlet的pattern改成*.do不就顯然不會match到.css或.js,那就不會經過webContentInterceptor從你的描述看起來你需要先知道link resource跟主頁面是分開的http request/response,你要處理的是resource就要從resource會經過的處理路徑下手
作者: Chris926926 (Jan Egeland)   2018-08-16 22:58:00
用一個filter過濾所有的request?不知道可不可以達到目的
作者: AndCycle (AndCycle)   2018-08-16 23:48:00
你要先搞懂瀏覽器怎麼發 req 跟收到 resp 的行為...Chrome 打開, F12 開發者工具, Network 那個分頁先看懂弄懂了再去 google "HTTP Caching"

Links booklink

Contact Us: admin [ a t ] ucptt.com