Apache кэширует определенные изображения и css

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