1
我遇到了一些緩存問題,因爲Wildfly 8.2在默認情況下僅在服務靜態文件時包含Last-Modified響應標頭從部署的戰爭文件。我希望Wildfly包含ETag,響應頭文件,這將解決我的緩存問題。有誰知道可以在standalone.xml文件中配置嗎?如何配置Wildfly 8.2以包含靜態文件(html,js,css等)的ETag響應標頭
我遇到了一些緩存問題,因爲Wildfly 8.2在默認情況下僅在服務靜態文件時包含Last-Modified響應標頭從部署的戰爭文件。我希望Wildfly包含ETag,響應頭文件,這將解決我的緩存問題。有誰知道可以在standalone.xml文件中配置嗎?如何配置Wildfly 8.2以包含靜態文件(html,js,css等)的ETag響應標頭
我已經使用特殊的「resource」servlet實現了帶ETag頭部的戰爭資源的解決方法。
Servlet從Omnifaces庫(http://showcase.omnifaces.org/servlets/FileServlet)中實現的FileServlet類擴展而來。 FileServlet實現正確處理所有的HTTP緩存頭,你只需要實現資源加載方法getFile()來爲戰爭資源文件提供服務。 這裏是從「應用程序」目錄服務的所有資源正確緩存的例子:
@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;
}
}
看一看在:http://stackoverflow.com/questions/34133039/browser-cache-expiration-for-js-和-css-files-with-wildfly –
已經看過了,但沒有看到答案。但似乎Undertow 1.2.x不支持靜態文件的etags。請參閱https://github.com/undertow-io/undertow/blob/07d0ccb1eefb04a3b712af4e2c8f3a303081b0b1/core/src/main/java/io/undertow/server/handlers/resource/PathResource.java和https://github.com/undertow -io/undertow/ blob/07d0ccb1eefb04a3b712af4e2c8f3a303081b0b1/core/src/main/java/io/undertow/server/handlers/resource/ResourceHandler.java –
@FedericoSierra關於如何使用和包含etag的任何想法可變大小,例如一些散列在文件的內容上。 –