Ich habe eine SPA-Anwendung, die in Websocket, Polymer, ES6, HTML5 geschrieben ist. Dies wird durch ein Jetty 9 Backend bedient, das als lauffähiges Glas mit absolut allem im JAR verpackt ist.Wie sollte ich mit Caching umgehen?
Ich möchte es so haben, dass, wenn eine neue Version der JAR bereitgestellt wird, ich eine Nachricht an den Client herunter, um eine cache-less Aktualisierung aller Ressourcen zu erzwingen.
Ich habe eine benutzerdefinierte HttpServlet
mein SPA zu dienen, damit ich die URL umgehen kann „Umschreiben“:
private static final Path ROOT = getDevelopmentWebRoot();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String requestPath = req.getPathInfo();
if (requestPath.equals("/")) {
requestPath = "index.html";
} else {
requestPath = requestPath.substring(1);
}
Path resource = ROOT.resolve(requestPath);
resp.setHeader("Cache-Control", "max-age=31536000");
resp.setContentType(MimeTypes.getDefaultMimeByExtension(resource.toString()));
try {
Files.copy(resource, resp.getOutputStream());
} catch (NoSuchFileException e) {
Files.copy(ROOT.resolve("index.html"), resp.getOutputStream());
}
}
Ich denke, meine Frage ist, wie kann ich einen Cache-Refresh weniger in Javascript erzwingen?
Danke - dafür habe ich mich entschieden - vorerst. Es ist nicht ideal, da es immer noch eine Anfrage gibt, die bei jedem Seitenladen auf den Server geht, aber es wird vorerst funktionieren :) – Cheetah