BaiFan
文章目录
  1. 1. 方案-1:配置处理静态文件
  2. 2. 方案-2:配置Spring拦截器

在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>
<!-- cache for one month -->
<prop key="/assets/**">2592000</prop>
</props>
</property>
</bean>
</mvc:interceptor>
</mvc:interceptors>

文章目录
  1. 1. 方案-1:配置处理静态文件
  2. 2. 方案-2:配置Spring拦截器