【问题标题】:Disable Tomcat caching for a static file禁用静态文件的 Tomcat 缓存
【发布时间】:2014-09-16 22:49:13
【问题描述】:

如何在位置禁用 Tomcat 对特定静态文件的缓存

[Tomcat Path]/webapps/myapp/foo.html

谢谢

【问题讨论】:

  • 这个答案:*.com/questions/3743136/… 似乎可以解决您的问题
  • 不是真的,我想为一个文件禁用
  • 如果您在谈论服务器端缓存,您是否有 apache mod_cache 或类似 squid 缓存的解决方案?我不认为 Tomcat 有 OOTB 缓存。请澄清。

标签: tomcat webserver tomcat7 cache-control


【解决方案1】:

您不能在单个文件级别上配置它。 Tomcat的配置粒度不允许这个恕我直言。 (从您对 Daniel Scott 评论的回复来看,您的目标是单个文件)

您的问题暗示您无论如何都没有遵循最佳做法:这个静态文件似乎任意(例如通过上传等)更改,您需要再次下载它。这意味着您正在更改已部署的 web 应用程序中的文件——这绝对违反了最佳实践。

您应该将文件上传到其他位置并提供您自己的下载 servlet 来提供这些外部资源。在那个 servlet 中,您可以自己实现缓存标头,基本上可以满足您的所有需求。请记住,Web 应用程序也可以从完全压缩的 WAR 文件中提供服务 - 您无法通过更改任意文件来更新该 WAR 文件。最后,从安全的角度来看,我觉得让 webapps 目录始终可写也是一种不好的做法。

所以:停止寻找 tomcat 配置,而是实现您自己的自定义下载和缓存标头。更改您的 URL 以引用您的下载 servlet 位置。这会导致您的应用程序具有所需的行为,尽管从技术上讲,它并没有按照您可能希望的方式回答您的问题。

【讨论】: