从Tomcat ExpiresFilter缓存中排除特定URL

从Tomcat ExpiresFilter缓存中排除特定URL,tomcat,Tomcat,是否可以从Tomcat Expires筛选器中排除单个特定URL,以便客户端浏览器不会缓存该URL 文件内容类型为text/javascript(如浏览器中所示),压缩为gzip 重要的是,所有剩余的Javascript文件保持可缓存状态 这是默认的expires筛选器: <filter> <filter-name>ExpiresFilter</filter-name> <filter-class>org.apache.catalina

是否可以从Tomcat Expires筛选器中排除单个特定URL,以便客户端浏览器不会缓存该URL

文件内容类型为text/javascript(如浏览器中所示),压缩为gzip

重要的是,所有剩余的Javascript文件保持可缓存状态

这是默认的expires筛选器:

<filter>
   <filter-name>ExpiresFilter</filter-name>
   <filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class>
   <init-param>
      <param-name>ExpiresByType application/javascript</param-name>
      <param-value>access plus 7 day</param-value>
   </init-param>
   ...
</filter>
<filter-mapping>
   <filter-name>ExpiresFilter</filter-name>
   <url-pattern>/*</url-pattern>
   <dispatcher>REQUEST</dispatcher>
</filter-mapping>
我还尝试了以下类型:

application/javascript

text/javascript;字符集=UTF-8

根据文档,后者应优先于不太具体的
text/javascript


一种方法是编写自己的类,该类扩展ExpiresFilter并重写
isEligibleToExpirationHeaderGeneration
方法,如下所示:

@Override
protected boolean isEligibleToExpirationHeaderGeneration(
        HttpServletRequest request, XHttpServletResponse response) {
    if("/my/special/uri".equals(request.getRequestURI())) {
        return false; // Don't do any Expires stuff
    } else {
        return super.isEligibleToExpirationHeaderGeneration(request, response);
    }
}

一种方法是编写自己的类,该类
扩展ExpiresFilter
,并重写
IsEligibleToExpireationHeaderGeneration
方法,如下所示:

@Override
protected boolean isEligibleToExpirationHeaderGeneration(
        HttpServletRequest request, XHttpServletResponse response) {
    if("/my/special/uri".equals(request.getRequestURI())) {
        return false; // Don't do any Expires stuff
    } else {
        return super.isEligibleToExpirationHeaderGeneration(request, response);
    }
}

我认为通过代码这是可能的。一旦我使用了代码,我认为通过代码它是可能的。有一次我对代码做了修改。
@Override
protected boolean isEligibleToExpirationHeaderGeneration(
        HttpServletRequest request, XHttpServletResponse response) {
    if("/my/special/uri".equals(request.getRequestURI())) {
        return false; // Don't do any Expires stuff
    } else {
        return super.isEligibleToExpirationHeaderGeneration(request, response);
    }
}