diff --git a/apps/syndie/java/src/net/i2p/syndie/web/ArchiveServlet.java b/apps/syndie/java/src/net/i2p/syndie/web/ArchiveServlet.java
index 7d03b98d508282c069fe0a236c766dafe1784052..042cc433f0795d238275bd473bcdc5f21315f33c 100644
--- a/apps/syndie/java/src/net/i2p/syndie/web/ArchiveServlet.java
+++ b/apps/syndie/java/src/net/i2p/syndie/web/ArchiveServlet.java
@@ -24,7 +24,7 @@ public class ArchiveServlet extends HttpServlet {
             renderRootIndex(resp);
             return;
         } else if (path.endsWith(Archive.INDEX_FILE)) {
-            renderSummary(resp);
+            renderSummary(req.getHeader("If-None-Match"), resp);
         } else if (path.indexOf("export.zip") != -1) {
             ExportServlet.export(req, resp);
         } else {
@@ -92,14 +92,18 @@ public class ArchiveServlet extends HttpServlet {
     
     public static final String HEADER_EXPORT_CAPABLE = "X-Syndie-Export-Capable";
     
-    private void renderSummary(HttpServletResponse resp) throws ServletException, IOException {
+    private void renderSummary(String etag, HttpServletResponse resp) throws ServletException, IOException {
         resp.setContentType("text/plain;charset=utf-8");
         //resp.setCharacterEncoding("UTF-8");
         ArchiveIndex index = BlogManager.instance().getArchive().getIndex();
         byte[] indexUTF8 = DataHelper.getUTF8(index.toString());
+        String newEtag = "\"" + I2PAppContext.getGlobalContext().sha().calculateHash(indexUTF8).toBase64() + "\"";
+        if (etag != null && etag.equals(newEtag)) {
+            resp.sendError(304, "Archive not modified");
+            return;
+        }
         resp.setHeader(HEADER_EXPORT_CAPABLE, "true");
-        Hash hash = I2PAppContext.getGlobalContext().sha().calculateHash(indexUTF8);
-        resp.setHeader("ETag", "\"" + hash.toBase64() + "\"");
+        resp.setHeader("ETag", newEtag);
         OutputStream out = resp.getOutputStream();
         out.write(indexUTF8);
         out.close();
diff --git a/apps/syndie/java/src/net/i2p/syndie/web/RemoteArchiveBean.java b/apps/syndie/java/src/net/i2p/syndie/web/RemoteArchiveBean.java
index 759c28cdb0980d73f1438ad9160dfef524e8dd60..48912327659027df2aa95ba180447c8ea54b8b55 100644
--- a/apps/syndie/java/src/net/i2p/syndie/web/RemoteArchiveBean.java
+++ b/apps/syndie/java/src/net/i2p/syndie/web/RemoteArchiveBean.java
@@ -336,7 +336,9 @@ public class RemoteArchiveBean {
             _statusMessages.add("Fetch of " + HTMLRenderer.sanitizeString(url) + " successful");
             _fetchIndexInProgress = false;
             ArchiveIndex i = new ArchiveIndex(I2PAppContext.getGlobalContext(), false);
-            if (!notModified) {
+            if (notModified) {
+                _statusMessages.add("Archive unchanged since last fetch.");
+            } else {
                 try {
                     i.load(_archiveFile);
                     _statusMessages.add("Archive fetched and loaded");