【问题标题】:OmniFaces CacheControlFilter has no effect when response contains Content-Disposition header当响应包含 Content-Disposition 标头时,OmniFaces CacheControlFilter 无效
【发布时间】:2016-12-20 16:21:06
【问题描述】:

当资源响应包含 HTTP 标头 Content-Disposition:inline 时,似乎不应用缓存指令。当我们使用 OmniFaces CacheControlFilter 时,响应不包含 Cache-ControlExpires 指令。正常吗?

【问题讨论】:

  • 通常情况下,响应标头会被旨在流式传输文件下载的代码重置。你确定这里不是这样吗?
  • 正确。有一个 response.reset();在代码中

标签: jsf cache-control omnifaces content-disposition


【解决方案1】:

不,这不是默认行为。

此行为表明负责流式传输文件的代码已执行response.reset() 以确保响应清晰明了。您经常在复制粘贴代码 sn-ps 中看到这一点,因为否则初学者会抱怨下载不起作用。例如这里:How to provide a file download from a JSF backing bean?

鉴于您使用的是 OmniFaces,您可能会发现 Faces#sendFile()FileServlet 对于将文件流式传输到响应的任务更有用。 Faces#sendFile() does not 执行response.reset()FileServlet 默认缓存30 days,可通过覆盖getExpireTime() 方法来控制。

【讨论】:

  • 谢谢,会很有用的
猜你喜欢
  • 2017-10-29
  • 2018-10-30
  • 2013-02-10
  • 2010-11-03
  • 2017-10-10
  • 1970-01-01
  • 2022-06-25
  • 2012-02-27
  • 2018-08-30
相关资源
最近更新 更多