从高速缓存中排除特定文件(静态资源)|春季启动网

时间:2018-09-26 13:18:33

标签: spring-mvc spring-boot

我有一个spring boot应用程序,下面是资源处理程序的注册代码:

@Configuration    
public class MyAppConfig extends WebMvcConfigurerAdapter {
       ...
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/resources/js/**")         
            .addResourceLocations("/resources/js/").setCachePeriod(31536000);
          //in same directory where all the js files placed,
          //I want to cache all the files in that directory
          //except for one file i.e. prop.js
          /*registry.addResourceHandler("/resources/js/prop.js")
           .addResourceLocations("/resources/js/").setCachePeriod(0);*/
       }
       ...
    }

有些事情我需要理解,即。
 1. addResourceHandler的参数是什么意思?
 2. addResourceLocations的参数是什么意思?
 3.是否有任何方法可以明确阻止prop.js被缓存?

可能有prop.js所在级别的文件,我希望所有其他文件都被缓存。

1 个答案:

答案 0 :(得分:1)

  1. addResourceHandler方法中,指定URL或URL模式。
  2. addResourceLocations中,指定一个有效目录,该目录实际包含(或可能由逗号分隔的许多目录)静态资源。

因此,最后,您在Web服务器上的URL ans目录之间进行了简单的映射。

  1. 如果仅想禁用文件prop.js的缓存,请尝试以下操作:

    registry
        .addResourceHandler("/resources/js/**/prop.js")
        .addResourceLocations("/resources/js/")
        .setCachePeriod(0);
    registry
        .addResourceHandler("/resources/js/**")
        .addResourceLocations("/resources/js/")
        .setCachePeriod(31536000);