1、最近客户反映页面加载js css频繁每点击按钮刷新页面都要重新向服务器重新获取。
2、这是查到可以设置http cache,但是在jsp页面中设置
response.addHeader("Cache-Control","max-age=1800"); 并没有起作用。就自行百度了spring mvc对静态资源缓存的处理。
3、由于目前使用的spring3则配置如下:
<mvc:resources mapping="/appframe/**" location="/appframe/" cache-period="1800"/>
cache-period单位是秒,是设置缓存过期时间。当设置完这些后在js以及css的header中会有cache-control的属性
Cache-Control: max-age=1800, must-revalidate。
must-revalidate
:告诉浏览器、缓存服务器,本地副本过期前,可以使用本地副本;本地副本一旦过期,必须去源服务器进行有效性校验。- max-age=1800 是静态文件的过期时间
4、本地进行了测试,当过期时间到了时再次获取并不会重新向服务器抓取,还是会从缓存拿。这是请求的状态码是 304/NOT Modifed 这里认为是检测到服务器资源并未发生改变所以还是从缓存获取。
接下来我将服务器资源做了修改重启服务发现这是获取的资源是改之后的。
5、换另一种方式测试,当还没超过过期时间改了服务器静态资源重启之后,发现修改的资源并未生效。
6、改测试方法在Tomcat以及weblogic均有测试。