在web项目中,如果使用了页面,就会涉及到css/js等组件。下面讲解了如何在SpringMVC项目中,相应css、js、img文件,并启用浏览器缓存等机制。
本文使用的Spring版本为4.2.7.RELEASE。
我的项目结构目录如下:
- 其中webapp下面的assets目录存放css/js等静态文件。
方案-1:配置处理静态文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <mvc:resources mapping="/favicon.ico" location="/assets/favicon.ico" cache-period="600"> <mvc:cache-control cache-public="true" /> </mvc:resources> <mvc:resources mapping="/assets/**" location="/assets/" cache-period="600"> <mvc:cache-control cache-public="true"/> <mvc:resource-chain resource-cache="true"> <mvc:resolvers> <bean class="org.springframework.web.servlet.resource.GzipResourceResolver"/> </mvc:resolvers> </mvc:resource-chain> </mvc:resources> <mvc:resources mapping="/package.json" location="/assets/package.json" cache-period="600"> <mvc:cache-control cache-public="true"/> </mvc:resources>
|
cache-period指明缓存时间为600秒,即10分钟。
GzipResourceResolver是对该静态文件进行压缩。
方案-2:配置Spring拦截器
配置Spring的拦截器,实现对静态文件的的缓存
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/assets/**"/> <bean id="webContentInterceptor" class="org.springframework.web.servlet.mvc.WebContentInterceptor"> <property name="cacheSeconds" value="2100"/> <property name="alwaysUseFullPath" value="true"/> <property name="cacheMappings"> <props> <prop key="/assets/**">2592000</prop> </props> </property> </bean> </mvc:interceptor> </mvc:interceptors>
|