当前位置: 首页 > 知识库问答 >
问题:

无法通过ExpiresFilter为JavaScript文件添加过期或缓存控制响应标头

方鸿振
2023-03-14

我有一个运行在Windows上的Tomcat 8.0.36上的网站。我跟踪了这个链接

https://tomcat.apache.org/tomcat-8.0-doc/config/filter.html

若要添加过期和缓存控制响应标头,请执行以下操作。以下是我所做的:

<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 10 minutes</param-value>
 </init-param>
 <init-param>
    <param-name>ExpiresByType text/css</param-name>
    <param-value>access plus 10 minutes</param-value>
 </init-param>
 <init-param>
    <param-name>ExpiresByType application/javascript</param-name>
    <param-value>access plus 10 minutes</param-value>
 </init-param>
</filter>
...
<filter-mapping>
 <filter-name>ExpiresFilter</filter-name>
 <url-pattern>/*</url-pattern>
 <dispatcher>REQUEST</dispatcher>
</filter-mapping>

共有1个答案

谯翔
2023-03-14

在我的测试之后,javascript的正确init代码似乎应该是(x-javascript):

 <init-param>
    <param-name>ExpiresByType application/x-javascript</param-name>
    <param-value>access plus 10 minutes</param-value>
 </init-param>
 类似资料:
  • 我想从我的脚本中实现一个自定义的nginx缓存控制方法,通过使用自定义标头:"Do-Cache"。我用在nginx的超文本传输协议块: 在nginx的服务器块中: 因此,对于Do-Cache: Public,nginx应该缓存响应。否则不会。 但这种配置不起作用。通过在日志中调试,和的值是正确的,直到它们在nginx的服务器块中使用为止。如果在服务器块中使用它们(,或简单的),则变量获得“1”值,

  • 我是Spring boot的新手,我已经了解到可以在Thymeleaf依赖项的帮助下通过控制器类加载HTML页面。最初确实奏效了,但现在不行了。这是我的控制器类 这是我的pom.xml 4.0.0 org.springframework.Boot spring-boot-starter-parent 2.3.5.release com.example demo2 0.0.1-Spring Boot

  • ETag标题的定义(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag): ETag HTTP响应头是资源的特定版本的标识符。它使缓存更有效,并节省带宽,因为如果内容没有改变,web服务器不需要发送完整的响应。另一方面,如果内容已经改变,etags有助于防止资源的同时更新互相覆盖(“空中冲突”)。 缓存控制头的定义(http

  • 我读到了关于和的相互矛盾的语句。 这个答案说: 使用must-revalidate时,如果服务器不响应重新验证请求,浏览器/代理应该返回504错误。在没有缓存的情况下,它只显示缓存的内容 然而,“只显示缓存的内容”而不进行重新验证与https://datatracker.ietf.org/doc/html/RFC7234#section-5.2.1.4中的内容相矛盾: “no-cache”requ

  • 我正在做一个项目,处理多个fxml和相应的控制器文件。我需要以某种方式从b.fxml的控制器访问定义在例如a.fxml中的fxml元素并使用它。 我不允许展示实际代码。但是,为此目的,我构建了一个简单的应用程序,其中包含两个FXML及其相应的控制器。 此应用程序具有带有ButtonController.java的Button.fxml和带有ProgressIndicator.fxml的Progre

  • 问题内容: 我们希望在生产部署中缓存崩溃,但不要浪费大量时间来弄清楚这样做的系统。我的想法是将具有当前版本号的paras应用于css和js文件的末尾: 两个问题:这会有效地打破缓存吗?由于参数表明这是动态内容,因此该参数会导致浏览器从不缓存该URL的响应吗? 问题答案: 参数表示查询字符串,因此浏览器将认为这是从到的新路径。因此导致它从文件而不是从缓存加载。如你所愿。 而且,浏览器将假定下次调用时