如何将Wildfly 8.2配置为包含静态文件(html、js、css等)的ETag响应标头



我遇到了一些缓存问题,因为当从部署的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;
  }
}

相关内容

  • 没有找到相关文章

最新更新