Unnötige decorate()-Aufrufe durch AcceleratorFilter verhindert
authorKai Moritz <kai@coolibri.de>
Thu, 31 May 2012 20:42:43 +0000 (22:42 +0200)
committerKai Moritz <kai@coolibri.de>
Thu, 2 Aug 2012 07:03:26 +0000 (09:03 +0200)
cachecontrol/src/main/java/de/halbekunst/juplo/cachecontrol/AcceleratorFilter.java

index ffafddc..f9cd886 100644 (file)
@@ -333,6 +333,7 @@ public class AcceleratorFilter implements Filter {
        */
       response.reset();
       pos = 0;
+      size = 0;
       stream = null;
       writer = null;
     }
@@ -649,9 +650,11 @@ public class AcceleratorFilter implements Filter {
       public void write(int i) throws IOException {
         if (pos == bufferSize) {
           out().write(buffer);
-          pos = 0;
           committed = true;
-          cacheControl.decorate(request, response);
+          /** Dekoration nur beim ersten Schreib-Schub anstoßen */
+          if (pos == size)
+            cacheControl.decorate(request, response);
+          pos = 0;
         }
         buffer[pos++] = (byte) i;
         size++;
@@ -663,7 +666,9 @@ public class AcceleratorFilter implements Filter {
           return;
 
         committed = true;
-        cacheControl.decorate(request, response);
+        /** Dekoration nur beim ersten Schreib-Schub anstoßen */
+        if (pos == size)
+          cacheControl.decorate(request, response);
         out().write(buffer, 0, pos);
         out().flush();
         pos = 0;