当响应包含Content-Disposition标头时,OmniFaces CacheControlFilter无效

时间:2016-12-20 16:21:07

标签: jsf cache-control omnifaces content-disposition

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

1 个答案:

答案 0 :(得分:2)

不,这不是默认行为。

此行为表明负责流式传输文件的代码执行了response.reset(),以确保响应清晰干净。你经常在copypaste代码片段中看到这一点,因为初学者否则会抱怨下载不起作用。例如: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()方法来控制。