21.14.2 对静态资源的HTTP缓存支持

为优化站点性能,静态资源应该带有恰当的'Cache-Control'值与其他必要的头。配置一个ResourceHttpRequestHandler处理器服务静态资源请求不仅会读取文件的元数据并填充'Last-Modified'头的值,正确配置时'Cache-Control'头也会被填充。【这段翻得还不是很清晰】

你可以设置ResourceHttpRequestHandler上的cachePeriod属性值,或使用一个CacheControl实例来支持更细致的指令:

  1. @Configuration
  2. @EnableWebMvc
  3. public class WebConfig extends WebMvcConfigurerAdapter {
  4. @Override
  5. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  6. registry.addResourceHandler("/resources/**")
  7. .addResourceLocations("/public-resources/")
  8. .setCacheControl(CacheControl.maxAge(1, TimeUnit.HOURS).cachePublic());
  9. }
  10. }

XML中写法则如下:

  1. <mvc:resources mapping="/resources/**" location="/public-resources/">
  2. <mvc:cache-control max-age="3600" cache-public="true"/>
  3. </mvc:resources>