From 8ed0b1d6e1d62f53f92bdab6e6590f7e8b2898a0 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Thu, 10 Jul 2003 04:55:41 +0000 Subject: [PATCH] cache tweaks --- includes/Article.php | 14 ++++++++------ includes/OutputPage.php | 30 +++++++++++++++++++++--------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/includes/Article.php b/includes/Article.php index a45264e64f..17226b3ff7 100644 --- a/includes/Article.php +++ b/includes/Article.php @@ -1641,8 +1641,8 @@ name=\"wpSummary\" maxlength=200 size=60>
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>
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>
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>
if(wfClientAcceptsGzip()) { header( "Content-Encoding: gzip" ); header( "Vary: Accept-Encoding" ); + wfDebug(" sending NEW gzip now...\n" ); return $gzout; } } diff --git a/includes/OutputPage.php b/includes/OutputPage.php index 0c623f3971..af099cc6b4 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -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" ); -- 2.20.1