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);
