似乎当资源响应包含HTTP标头Content-Disposition:inline
时,似乎没有应用缓存指令。当我们使用Ommnifaces cachecontrolfiter时,响应不包含Cache-Control
或Expires
指令。它是正常的吗?
不,这不是默认行为。
此行为表明负责流式传输文件的代码执行了response.reset()
,以确保响应清晰且干净。您经常在复复型代码片段中看到这一点,因为启动器否则抱怨下载不起作用。例如:如何从JSF支持BEAN下载文件?
鉴于您使用的是Omnifaces,您可能会发现Faces#sendFile()
或FileServlet
对于将文件流响应的任务更有用。Faces#sendFile()
不执行response.reset()
,默认情况下FileServlet
缓存30天,可以通过覆盖getExpireTime()
方法来控制。