Tomcat устанавливает no-cache для файлов JS и CSS
Так расстраивает.:П
Действительно хотелось бы, чтобы они кэшировались в браузерах пользователей, но это настраивает это.
Cache-Control: нет хранилища, нет кэша, необходимо повторно проверить, пост-проверка =0, предварительная проверка = 0
Как мне это остановить?
Я попытался посмотреть в наших настройках что-нибудь, касающееся кеширования. Используются все значения по умолчанию, что в соответствии с документацией означает, что это разрешено. Отличаются ли статические файлы, такие как JS и CSS?
Изменить: я заметил, что некоторые файлы JS разрешено кэшировать, поскольку Chrome говорит, что они были "извлечены из кэша". Нет CSS-файлов, однако.
3 ответа
Или вы можете иметь сервлет, который устанавливает срок действия кэша и последние измененные заголовки в ответе.
Я также рекомендую GZIP сжимать JavaScript и CSS. Tomcat поставляется с фильтром сжатия в каталоге /examples, который вы можете подключить для соответствующих URL-адресов.
Вы должны объединить и минимизировать ваш JavaScript и CSS для повышения производительности.
Все это рекомендации от плагина YSlow для Firefox. Вы можете увидеть, насколько эффективны эти меры, используя плагин Firebug.
Вы можете написать свой собственный фильтр кэша и настроить его в своем веб-XML.
Здесь вы найдете простой, но отличный пример того, как это реализовать.
в вашем web.xml
Вы объявляете свой фильтр:
<filter>
<description>Set HTTP headers for a mapping.</description>
<filter-name>CacheFilter</filter-name>
<filter-class>your.package.CacheFilter</filter-class>
<init-param>
<description>Adds an expires header to the response</description>
<param-name>header</param-name>
<param-value>Expires: Thu, 26 Apr 2012 20:00:00 GMT</param-value>
</init-param>
</filter>
затем сопоставьте его (примените его к ответам):
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>*.js</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>*.css</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
Вы также можете использовать фильтр сжатия (таким же образом), чтобы уменьшить загрузку данных, отправляемых с сервера. Эта реализация фильтра gzip работает для меня уже много лет (вместе с фильтром кеша), и с ними никогда не было проблем.
<FilesMatch "\.(js|css)$">
ExpiresDefault "now plus 1 week"
</Files>
в вашей конфигурации Apache нужно делать то же самое, если это где-то после настройки Tomcat.