]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
revert output buffering (costly) for ETags (low priority)
authorEvan Prodromou <evan@status.net>
Wed, 23 Sep 2009 13:33:40 +0000 (09:33 -0400)
committerEvan Prodromou <evan@status.net>
Wed, 23 Sep 2009 13:33:40 +0000 (09:33 -0400)
index.php
lib/action.php

index fa94f0c75e64ba10a5cbe222fa37de51288fa73d..362ab3cd37e1bef5cd189703f949063c99c6309c 100644 (file)
--- a/index.php
+++ b/index.php
@@ -233,7 +233,7 @@ function main()
 
         try {
             if ($action_obj->prepare($args)) {
-                $action_obj->handleWrapper($args);
+                $action_obj->handle($args);
             }
         } catch (ClientException $cex) {
             $cac = new ClientErrorAction($cex->getMessage(), $cex->getCode());
index ebef4f9e4399d5db186f9d988aeee057b10a07bb..670eb498c1a63375af9c37b882c4a61b87f8af45 100644 (file)
@@ -873,29 +873,28 @@ class Action extends HTMLOutputter // lawsuit
     }
 
     /**
-     * Wrapper for the handle method that handles etags, last-modified, and other conditional headers
+     * Handler method
      *
      * @param array $argarray is ignored since it's now passed in in prepare()
      *
      * @return boolean is read only action?
      */
-    function handleWrapper($argarray=null)
+    function handle($argarray=null)
     {
-        header('Vary: Accept-Encoding,Cookie,Accept-Language,Authorization');
-        header("Cache-Control: must-revalidate");
+        header('Vary: Accept-Encoding,Cookie');
         $lm   = $this->lastModified();
         $etag = $this->etag();
         if ($etag) {
             header('ETag: ' . $etag);
         }
-        $if_none_match = (array_key_exists('HTTP_IF_NONE_MATCH', $_SERVER)) ?
-          $_SERVER['HTTP_IF_NONE_MATCH'] : null;
         if ($lm) {
             header('Last-Modified: ' . date(DATE_RFC1123, $lm));
             if (array_key_exists('HTTP_IF_MODIFIED_SINCE', $_SERVER)) {
                 $if_modified_since = $_SERVER['HTTP_IF_MODIFIED_SINCE'];
                 $ims = strtotime($if_modified_since);
                 if ($lm <= $ims) {
+                    $if_none_match = (array_key_exists('HTTP_IF_NONE_MATCH', $_SERVER)) ?
+                      $_SERVER['HTTP_IF_NONE_MATCH'] : null;
                     if (!$if_none_match ||
                         !$etag ||
                         $this->_hasEtag($etag, $if_none_match)) {
@@ -906,36 +905,6 @@ class Action extends HTMLOutputter // lawsuit
                 }
             }
         }
-        if($etag) {
-            $ret = $this->handle($argarray);
-        }else{
-            ob_start();
-            $ret = $this->handle($argarray);
-            $output = ob_get_contents();
-            ob_end_clean();
-            //deep etag
-            $etag = md5($output);
-            header('ETag: ' . $etag);
-            if($if_none_match && $this->_hasEtag($etag, $if_none_match)) {
-                header('HTTP/1.1 304 Not Modified');
-                // Better way to do this?
-                exit(0);
-            }
-            header('Content-Length: '.strlen($output));
-            print $output;
-        }
-        return $ret;
-    }
-
-    /**
-     * Handler method
-     *
-     * @param array $argarray is ignored since it's now passed in in prepare()
-     *
-     * @return boolean is read only action?
-     */
-    function handle($argarray=null)
-    {
     }
 
     /**