Apache缓存特定的图像和CSS

时间:2011-11-05 00:23:59

标签: image apache caching

我们有运行tomcat和apache的网站,并且希望只在apache级别缓存特定的jpg,gif图像以减少tomcat负载。

关于CSS和Javascripts,所有这些都可以缓存。

在部署已更改的图像,css和javascripts后,它应自动加载。

我正在尝试获取此配置但找不到任何内容..有人可以分享示例配置吗?

对于我们来说,仅缓存特定图像非常重要,而且它也很紧急。

1 个答案:

答案 0 :(得分: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.使用过滤器:

  • 创建一个新的Filter类 - “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);  
    }
    
  • 在app 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>`