Set no-cache headers for nearly all Super Dev Mode pages
This is necessary for IE9 and IE10 (at least).
Change-Id: Ib8ca44580349666079b1c461c55a7c1bd331b8ed
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/PageUtil.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/PageUtil.java
index 74f0e2e..47f652c 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/PageUtil.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/PageUtil.java
@@ -31,6 +31,7 @@
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.URL;
+import java.util.Date;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
@@ -42,6 +43,8 @@
*/
class PageUtil {
+ private static final String TIME_IN_THE_PAST = "Fri, 01 Jan 1990 00:00:00 GMT";
+
/**
* Sends a page represented as a string.
*/
@@ -53,6 +56,16 @@
}
/**
+ * Sets all headers that might help to prevent a page from being cached.
+ */
+ static void setNoCacheHeaders(HttpServletResponse response) {
+ response.setHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");
+ response.setHeader("Pragma", "no-cache");
+ response.setHeader("Expires", TIME_IN_THE_PAST);
+ response.setDateHeader("Date", new Date().getTime());
+ }
+
+ /**
* Sends an HTML page with some JSON code prepended to it.
*
* @param variableName the name of the variable to set on the "window" object.
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/WebServer.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/WebServer.java
index 6699312..a1cd01c 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/WebServer.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/WebServer.java
@@ -37,7 +37,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
-import java.util.Date;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
@@ -85,7 +84,6 @@
Pattern.compile("([a-zA-Z_][a-zA-Z0-9_]*\\.)*[a-zA-Z_][a-zA-Z0-9_]*");
private static final MimeTypes MIME_TYPES = new MimeTypes();
- private static final String TIME_IN_THE_PAST = "Fri, 01 Jan 1990 00:00:00 GMT";
private final SourceHandler handler;
@@ -163,6 +161,13 @@
private void doGet(String target, HttpServletRequest request, HttpServletResponse response)
throws IOException {
+
+ if (!target.endsWith(".cache.js")) {
+ // Make sure IE9 doesn't cache any pages.
+ // (Nearly all pages may change on server restart.)
+ PageUtil.setNoCacheHeaders(response);
+ }
+
if (target.equals("/")) {
setHandled(request);
JsonObject config = makeConfig();
@@ -288,11 +293,6 @@
if (target.endsWith(".cache.js")) {
response.setHeader("X-SourceMap", sourceMapLocationForModule(moduleName));
- } else if (target.endsWith(".nocache.js")) {
- response.setHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");
- response.setHeader("Pragma", "no-cache");
- response.setHeader("Expires", TIME_IN_THE_PAST);
- response.setDateHeader("Date", new Date().getTime());
}
response.setHeader("Access-Control-Allow-Origin", "*");
String mimeType = guessMimeType(target);