cache tweaks
authorBrion Vibber <brion@users.mediawiki.org>
Thu, 10 Jul 2003 04:55:41 +0000 (04:55 +0000)
committerBrion Vibber <brion@users.mediawiki.org>
Thu, 10 Jul 2003 04:55:41 +0000 (04:55 +0000)
includes/Article.php
includes/OutputPage.php

index a45264e..17226b3 100644 (file)
@@ -1641,8 +1641,8 @@ name=\"wpSummary\" maxlength=200 size=60><br>
                global $wgUser, $wgCacheEpoch;
                if(!file_exists( $fn = $this->fileCacheName() ) ) return false;
                $cachetime = wfUnix2Timestamp( filemtime( $fn ) );
-               $good = ( $this->mTouched <= $cachetime ) &&
-                       ($wgCacheEpoch <= $cachetime );
+               $good = (( $this->mTouched <= $cachetime ) &&
+                       ($wgCacheEpoch <= $cachetime ));
         wfDebug(" isFileCacheGood() - cachetime $cachetime, touched {$this->mTouched} epoch {$wgCacheEpoch}, good $good\n");
                return $good;
        }
@@ -1652,6 +1652,7 @@ name=\"wpSummary\" maxlength=200 size=60><br>
                wfDebug(" loadFromFileCache()\n");
                $filename=$this->fileCacheName();
                $filenamegz = "{$filename}.gz";
+               $wgOut->sendCacheControl();
                if( $wgUseGzip
                        && wfClientAcceptsGzip()
                        && file_exists( $filenamegz)
@@ -1661,19 +1662,19 @@ name=\"wpSummary\" maxlength=200 size=60><br>
                        header( "Vary: Accept-Encoding" );
                        $filename = $filenamegz;
                }
-               $wgOut->sendCacheControl();
                readfile( $filename );
        }
        
        function saveToFileCache( $text ) {
                global $wgUseGzip, $wgCompressByDefault;
                
-        wfDebug(" saveToFileCache()\n");
+        wfDebug(" saveToFileCache()\n", false);
                $filename=$this->fileCacheName();
                 $mydir2=substr($filename,0,strrpos($filename,"/")); # subdirectory level 2
                $mydir1=substr($mydir2,0,strrpos($mydir2,"/")); # subdirectory level 1
-               if(!file_exists($mydir1)) { mkdir($mydir1,0777); } # create if necessary
-               if(!file_exists($mydir2)) { mkdir($mydir2,0777); }                      
+               if(!file_exists($mydir1)) { mkdir($mydir1,0775); } # create if necessary
+               if(!file_exists($mydir2)) { mkdir($mydir2,0775); }
+               
                $f = fopen( $filename, "w" );
                if($f) {
                        $now = wfTimestampNow();
@@ -1707,6 +1708,7 @@ name=\"wpSummary\" maxlength=200 size=60><br>
                                if(wfClientAcceptsGzip()) {
                                        header( "Content-Encoding: gzip" );
                                        header( "Vary: Accept-Encoding" );
+                                       wfDebug("  sending NEW gzip now...\n" );
                                        return $gzout;
                                }
                        }
index 0c623f3..af099cc 100644 (file)
@@ -149,20 +149,27 @@ class OutputPage {
        function checkLastModified ( $timestamp )
        {
                global $wgLang, $wgCachePages, $wgUser;
-               if( !$wgCachePages ) return;
+               if( !$wgCachePages ) {
+                       wfDebug( "CACHE DISABLED\n", false );
+                       return;
+               }
                if( preg_match( '/MSIE ([1-4]|5\.0)/', $_SERVER["HTTP_USER_AGENT"] ) ) {
                        # IE 5.0 has probs with our caching
-                       #wfDebug( "-- bad client, not caching\n", false );
+                       wfDebug( "-- bad client, not caching\n", false );
+                       return;
+               }
+               if( $wgUser->getOption( "nocache" ) ) {
+                       wfDebug( "USER DISABLED CACHE\n", false );
                        return;
                }
-               if( $wgUser->getOption( "nocache" ) ) return;
 
+               $lastmod = gmdate( "D, j M Y H:i:s", wfTimestamp2Unix(
+                       max( $timestamp, $wgUser->mTouched ) ) ) . " GMT";
+               
                if( $_SERVER["HTTP_IF_MODIFIED_SINCE"] != "" ) {
                        $ismodsince = wfUnix2Timestamp( strtotime( $_SERVER["HTTP_IF_MODIFIED_SINCE"] ) );
-                       #wfDebug( "-- client send If-Modified-Since: " . $_SERVER["HTTP_IF_MODIFIED_SINCE"] . "\n", false );
-                       $lastmod = gmdate( "D, j M Y H:i:s", wfTimestamp2Unix(
-                               max( $timestamp, $wgUser->mTouched ) ) ) . " GMT";
-                       #wfDebug( "--  we might send Last-Modified : $lastmod\n", false ); 
+                       wfDebug( "-- client send If-Modified-Since: " . $_SERVER["HTTP_IF_MODIFIED_SINCE"] . "\n", false );
+                       wfDebug( "--  we might send Last-Modified : $lastmod\n", false ); 
                
                        if( ($ismodsince >= $timestamp ) and $wgUser->validateCache( $ismodsince ) ) {
                                # Make sure you're in a place you can leave when you call us!
@@ -170,12 +177,15 @@ class OutputPage {
                                header( "Expires: Mon, 15 Jan 2001 00:00:00 GMT" ); # Cachers always validate the page!
                                header( "Cache-Control: private, must-revalidate, max-age=0" );
                                header( "Last-Modified: {$lastmod}" );                  
-                               #wfDebug( "CACHED client: $ismodsince ; user: $wgUser->mTouched ; page: $timestamp\n", false );
+                               wfDebug( "CACHED client: $ismodsince ; user: $wgUser->mTouched ; page: $timestamp\n", false );
                                exit;
                        } else {
-                               #wfDebug( "READY  client: $ismodsince ; user: $wgUser->mTouched ; page: $timestamp\n", false );
+                               wfDebug( "READY  client: $ismodsince ; user: $wgUser->mTouched ; page: $timestamp\n", false );
                                $this->mLastModified = $lastmod;
                        }
+               } else {
+                       wfDebug( "We're confused.\n", false );
+                       $this->mLastModified = $lastmod;
                }
        }
 
@@ -310,9 +320,11 @@ class OutputPage {
 
        function sendCacheControl() {
                if( $this->mLastModified != "" ) {
+                       wfDebug( "** private caching; {$this->mLastModified} **\n", false );
                        header( "Cache-Control: private, must-revalidate, max-age=0" );
                        header( "Last-modified: {$this->mLastModified}" );
                } else {
+                       wfDebug( "** no caching **\n", false );
                        header( "Cache-Control: no-cache" ); # Experimental - see below
                        header( "Pragma: no-cache" );
                        header( "Last-modified: " . gmdate( "D, j M Y H:i:s" ) . " GMT" );