【问题标题】:Tomcat ExpiresFilter not working correctlyTomcat ExpiresFilter 无法正常工作
【发布时间】:2013-07-09 09:36:26
【问题描述】:

我无法让 Tomcat 发送具有正确过期定义的图像。浏览器不断发送已下载图像的获取请求,Tomcat 以 304 响应。我想要的是 Tomcat 将使用适当的 expires 标头响应初始请求,并且没有任何 Last-modified 标头,因此浏览器将使用本地缓存直到文件过期不去服务器每次页面加载看图片是否有变化。

我的 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 1 weeks</param-value>
    </init-param>
    <init-param>
        <param-name>ExpiresByType text/css</param-name>
        <param-value>modification plus 0 minutes</param-value>
    </init-param>
    <init-param>
        <param-name>ExpiresByType application/javascript</param-name>
        <param-value>modification plus 0 minutes</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>ExpiresFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping> 

有什么想法吗?

【问题讨论】:

    标签: tomcat tomcat7


    【解决方案1】:

    您能否按照Container Provided Filters > ExpiresFilter > Troubleshooting 中的说明启用 ExpiresFilter 日志:

    $CATALINA_BASE/conf/logging.properties 中添加以下声明:

    org.apache.catalina.filters.ExpiresFilter.level = FINE
    

    您将看到如下日志消息:

    添加过期标头:

    Mar 26, 2010 2:09:47 PM org.apache.catalina.filters.ExpiresFilter onBeforeWriteResponseBody
      FINE: Request "/tomcat.gif" with response status "200"
      content-type "image/gif", set expiration date 3/26/10 2:19 PM
    

    没有添加过期头:

    Mar 26, 2010 2:10:27 PM org.apache.catalina.filters.ExpiresFilter onBeforeWriteResponseBody
      FINE: Request "/docs/config/manager.html" with response status "200"
      content-type "text/html", no expiration configured
    

    【讨论】:

    • 这里有同样的问题。我已经按照你的说法放置了日志,我收到的错误行是:05-Aug-2019 10:48:31.689 FINE [http-apr-80-exec-6] org.apache.catalina.filters.ExpiresFilter。 isEligibleToExpirationHeaderGeneration 请求“/docs/es/”,响应状态为“304”,内容类型为“304”,对于给定的状态跳过过期标头生成我不明白....正是状态 304 是我想要避免的。
    猜你喜欢
    • 1970-01-01
    • 2017-07-04
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2013-09-24
    • 1970-01-01
    • 2016-12-01
    相关资源
    最近更新 更多