[问题] 避免浏览器快取静态资源

楼主: 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