How to enable browser caching of static content(images, css, js) with Tomcat?

前端 未结 3 1190
野性不改
野性不改 2021-02-02 12:38

How to enable browser caching of static content(images, css, js) with Tomcat? Preferable solution will be editingspring MVC config files or web.xml

相关标签:
3条回答
  • 2021-02-02 13:11

    If Spring 3.0 is being used, <mvc:resources> is one way to implement caching of static resources. This link has some documentation.

    0 讨论(0)
  • 2021-02-02 13:16

    try (with changing the values)

    <mvc:resources mapping="/static/**" location="/public-resources/" 
           cache-period="31556926"/>
    <mvc:annotation-driven/>
    

    You can also use an interceptor:

    <mvc:interceptors>
       <mvc:interceptor>
        <mvc:mapping path="/static/*"/>
        <bean id="webContentInterceptor" 
             class="org.springframework.web.servlet.mvc.WebContentInterceptor">
            <property name="cacheSeconds" value="31556926"/>
            <property name="useExpiresHeader" value="true"/>
            <property name="useCacheControlHeader" value="true"/>
            <property name="useCacheControlNoStore" value="true"/>
        </bean>
       </mvc:interceptor>
    </mvc:interceptors>
    

    See the MVC docs

    0 讨论(0)
  • 2021-02-02 13:17

    For those who use Java configuration, you can manage caching parameters using ResourceHandlerRegistry, there is example how do I set up different caching preferences for different content types:

    @Configuration
    @EnableWebMvc
    // ...
    public class WebConfiguration extends WebMvcConfigurerAdapter {
    
        // ...
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
    
            registry.addResourceHandler("/ui/css/**")
                    .addResourceLocations("classpath:/WEB-INF/css/")
                    .setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS));
    
            registry.addResourceHandler("/ui/js/**")
                    .addResourceLocations("classpath:/WEB-INF/js/")
                    .setCacheControl(CacheControl.maxAge(1, TimeUnit.DAYS));
    
            registry.addResourceHandler("/ui/**")
                    .addResourceLocations("classpath:/WEB-INF/")
                    .setCacheControl(CacheControl.noCache());
        }
    
        // ...
    }
    
    0 讨论(0)
提交回复
热议问题