2017-01-30 6 views
0

Я пытаюсь установить кеш-контроль для любых статических ресурсов (изображений, js, css) на моем веб-сайте. Я использую Spring 4 (с Spring Security) и сервер Tomcat 8.Невозможно установить заголовок управления кешем для любых статических ресурсов (Spring)

Я уже пытался установить ExpiryFilter в моей web.xml

<filter> 
    <filter-name>ExpiresFilter</filter-name> 
    <filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class> 
    <init-param> 
     <param-name>ExpiresByType image</param-name> 
     <param-value>access plus 2 weeks</param-value> 
    </init-param> 
    <init-param> 
     <param-name>ExpiresByType text/css</param-name> 
     <param-value>access plus 2 weeks</param-value> 
    </init-param> 
    <init-param> 
     <param-name>ExpiresByType text/javascript</param-name> 
     <param-value>access plus 2 weeks</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>ExpiresFilter</filter-name> 
    <url-pattern>/resources/*</url-pattern> 
</filter-mapping> 

Но поскольку ExpiresFilter не работает, я попытался установить MVC ресурсов с кэш-период:

<mvc:resources mapping="/resources/**" location="/resources/,classpath:/resources/" cache-period="2592000" /> 
<mvc:annotation-driven /> 

Но не работает.

Я также попытался проверить, работает ли фильтра-фильтра в моем web.xml, но оказывается, что он не фильтрует ни один из изображений/js/css-типа, а фильтрует мой html-файл. Мои статические файлы хранятся внутри папки webapp/resources, независимо от того, находится ли файл html внутри файла webapp/WEB-INF/jsp.

Я также добавить это в моей весенней конфигурации безопасности:

<http pattern="/resources/**" security="none"></http> 

Что я пропустил?

спасибо.

ответ

0

Я включил регистрацию фильтров tomcat по org.apache.catalina.filters.ExpiresFilter.level = FINE в logging.properties из tomcat.

Когда фильтр был инициализирован следующий журнал был напечатан в журнале Catalina:

Фильтр инициализируется конфигурации ExpiresFilter [excludedResponseStatusCode = [304], по умолчанию = нуль, ByType = {текст/CSS = ExpiresConfiguration [начальную точку = ACCESS_TIME, длительность = [10 минут]], применение/JavaScript = ExpiresConfiguration [начальная точка = ACCESS_TIME, длительность = [10 минут]] , образ = ExpiresConfiguration [начальная точка = ACCESS_TIME, длительность = [10 минут]]}]

Вы можете видеть, что все HTTP-ответы со статусом 304 будут исключены для настройки параметров управления кэшем.

Я настроил фильтр tomcat, и мои ресурсы были кешированы. Это я могу подтвердить бревна фильтра:

org.apache.catalina.filters.ExpiresFilter onBeforeWriteResponseBody FINE: Запрос «/static/img/home/phone_icon2.png» со статусом ответа «200» типа содержимого «изображений/png ", установить дату окончания 1/31/17 11:59 31 января 2017 11:49:30 org.apache.catalina.filters.ExpiresFilter getExpirationDate FINE: Использовать ExpiresConfiguration [startPoint = ACCESS_TIME, duration = [ 10 MINUTE]] совпадение «изображения» для контента «image/png» возвращается 1/31/17 11:59 31 января 2017 11:49:30 org.apache.catalina.filters.ExpiresFilter onBeforeWriteResponseBody FINE : Запросить «/static/img/home/bgimage.png» с ответом «200» content-type «image/png», установить срок годности 1/31/17 11:59 31 января 2017 11:49:30 org.apache.catalina.filters.ExpiresFilter getExpirationDate FINE: используйте ExpiresConfiguration [startPoint = ACCESS_TIME, duration = [10 MINUTE]], соответствующее «изображению» для контента типа «image/png "возвращается 1/31/17 11:59

Я бы посоветовал вам сначала включить ведение журнала Reference

Смежные вопросы