Как включить в браузере кэширование статического содержимого (изображения, CSS, JS) с Tomcat? - PullRequest
19 голосов
/ 08 ноября 2010

Как включить браузерное кэширование статического содержимого (изображения, CSS, JS) с Tomcat? Предпочтительным решением будет редактирование конфигурационных файлов весны MVC или web.xml

Ответы [ 3 ]

23 голосов
/ 08 ноября 2010

попробуй (с изменением значений)

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

Вы также можете использовать перехватчик:

<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>

См. Документы MVC

1 голос
/ 08 ноября 2010

Если используется Spring 3.0, <mvc:resources> является одним из способов реализации кэширования статических ресурсов. Эта ссылка содержит некоторую документацию.

0 голосов
/ 06 марта 2019

Для тех, кто использует конфигурацию Java, вы можете управлять параметрами кэширования, используя ResourceHandlerRegistry, есть пример, как настроить различные параметры кэширования для разных типов контента:

@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());
    }

    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...