我遇到了一些缓存问题,因为当从部署的war文件中提供静态文件时,Wildfly 8.2默认情况下只包括Last Modified响应标头。我希望Wildfly包含ETag,响应头,这将解决我的缓存问题。有人知道是否可以在standalone.xml文件中进行配置吗?
我已经用特殊的"资源"servlet实现了解决方法,该servlet使用ETag标头为战争资源提供服务。
Servlet扩展自Omnifaces库中实现的FileServlet类(http://showcase.omnifaces.org/servlets/FileServlet)。FileServlet实现正确处理所有HTTP缓存头,您只需要实现资源加载方法getFile()来为war资源文件提供服务。以下是正确缓存服务"应用程序"目录中所有资源的示例:
@WebServlet(value = {"/app/*"})
public class ApplicationResourceServlet extends FileServlet {
@Override
protected File getFile(HttpServletRequest request) throws IllegalArgumentException {
final String pathInfo = request.getPathInfo();
if (pathInfo == null || pathInfo.isEmpty() || "/".equals(pathInfo)) {
return null;
}
final String realPath = getServletContext().getRealPath("/app" + pathInfo);
if (realPath != null && Paths.get(realPath).toFile().exists()) {
return new File(realPath);
}
return null;
}
}