当资源响应包含HTTP标头Content-Disposition:inline
时,似乎不应用缓存指令。当我们使用OmniFaces CacheControlFilter时,响应不包含Cache-Control
或Expires
指令。这是正常的吗?
答案 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()
方法来控制。