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;
}
wfDebug(" loadFromFileCache()\n");
$filename=$this->fileCacheName();
$filenamegz = "{$filename}.gz";
+ $wgOut->sendCacheControl();
if( $wgUseGzip
&& wfClientAcceptsGzip()
&& file_exists( $filenamegz)
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();
if(wfClientAcceptsGzip()) {
header( "Content-Encoding: gzip" );
header( "Vary: Accept-Encoding" );
+ wfDebug(" sending NEW gzip now...\n" );
return $gzout;
}
}
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!
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;
}
}
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" );