#image #apache #caching
#изображение #apache #кэширование
Вопрос:
У нас есть веб-сайт, работающий с tomcat и apache, и мы хотим кэшировать только определенные изображения в формате JPG, GIF на уровне apache, чтобы уменьшить нагрузку на tomcat.
Что касается CSS и Javascripts, все они могут быть кэшированы.
При развертывании измененных изображений, css и javascripts он должен загружаться автоматически.
Я пытаюсь получить эту конфигурацию, но не смог найти ни одной.. Может кто-нибудь, пожалуйста, поделиться образцом конфигурации?
Для нас очень важно кэшировать только определенные изображения, и это также срочно.
Ответ №1:
В приложении tomcat context.xml добавить :
disableCacheProxy="false" securePagesWithPragma="false"
За которым следует любой из приведенных ниже :
1. Используйте jsp :
-
Создайте новый jsp, например. «nocache.jsp» с нижеприведенным содержимым :
<meta http-equiv="pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-store"> <!-- HTTP 1.1 --> <meta http-equiv="Expires" content="0">
-
Включите этот jsp во все jsp, которые вы не хотите кэшировать как :
<jsp:include page="../nocache.jsp" />
2. Используйте фильтр :
-
Создайте новый класс фильтра — «CacheHeaderFilter» для обработки классов, которые НЕ должны кэшироваться, как показано ниже :
public void doFilter( ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { HttpServletResponse httpResponse = (HttpServletResponse)response; httpResponse.setHeader("Cache-Control","no-cache"); httpResponse.setHeader("Pragma","no-cache"); httpResponse.setDateHeader ("Expires", 0); filterChain.doFilter(request, response); }
-
В приложении web.xml , настройте этот фильтр и укажите URL-адреса, которые НЕ должны кэшироваться, как показано ниже :
<filter> <filter-name>CacheFilter</filter-name> <filter-class>com.org.CacheHeaderFilter</filter-class> </filter> <filter-mapping> <filter-name>CacheFilter</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>`