Initial support for Squid3 and ESI. Adds $wgUseESI and sends Surrogate-Control Header...
authorGabriel Wicke <gwicke@users.mediawiki.org>
Sat, 31 Jan 2004 12:45:09 +0000 (12:45 +0000)
committerGabriel Wicke <gwicke@users.mediawiki.org>
Sat, 31 Jan 2004 12:45:09 +0000 (12:45 +0000)
LocalSettings.sample
includes/DefaultSettings.php
includes/OutputPage.php

index 96dd174..6bda7fd 100644 (file)
@@ -133,6 +133,8 @@ $wgOutputEncoding   = "ISO-8859-1";
 #
 # Enable/disable Squid
 # $wgUseSquid = true;
+# If you run Squid3 with ESI support, enable this (default:false):
+# $wgUseESI = true;
 # Internal server name as known to Squid, if different
 # $wgInternalServer = 'http://yourinternal.tld:8000';
 # A list of proxy servers (ips if possible) to purge on changes
index daffa99..cce591b 100644 (file)
@@ -142,6 +142,8 @@ $wgCookieExpiration = 2592000;
 #
 # Enable/disable Squid
  $wgUseSquid = false;
+# If you run Squid3 with ESI support, enable this (default:false):
+ $wgUseESI = false;
 # Internal server name as known to Squid, if different
 # $wgInternalServer = 'http://yourinternal.tld:8000';
  $wgInternalServer = $wgServer;
index 4a5376a..1743f25 100644 (file)
@@ -248,15 +248,30 @@ class OutputPage {
        }
 
        function sendCacheControl() {
-               global $wgUseSquid;
+               global $wgUseSquid, $wgUseESI;
                # FIXME: This header may cause trouble with some versions of Internet Explorer
                header( "Vary: Accept-Encoding, Cookie" );
                if( $this->mLastModified != "" ) {
                        if( $wgUseSquid && ! isset( $_COOKIE[ini_get( "session.name") ] ) ) {
-                               # We'll purge the proxy cache for anons explicitly, but require end user agents
-                               # to revalidate against the proxy on each visit.
-                               wfDebug( "** local proxy caching; {$this->mLastModified} **\n", false );
-                               header( "Cache-Control: s-maxage=2678400, must-revalidate, max-age=0" );
+                               if ( $wgUseESI ) {
+                                       # We'll purge the proxy cache for anons explicitly, but require end user agents
+                                       # to revalidate against the proxy on each visit.
+                                       # Surrogate-Control controls our Squid, Cache-Control downstream caches
+                                       wfDebug( "** proxy caching with ESI; {$this->mLastModified} **\n", false );
+                                       # start with a shorter timeout for initial testing
+                                       # header( 'Surrogate-Control: max-age=2678400+2678400, content="ESI/1.0"');
+                                       header( 'Surrogate-Control: max-age=18000+18000, content="ESI/1.0"');
+                                       header( 'Cache-Control: s-maxage=0, must-revalidate, max-age=0' );
+                               } else {
+                                       # We'll purge the proxy cache for anons explicitly, but require end user agents
+                                       # to revalidate against the proxy on each visit.
+                                       # The Squid need to replace the Cache-Control header with 
+                                       # Cache-Control: s-maxage=0, must-revalidate, max-age=0
+                                       wfDebug( "** local proxy caching; {$this->mLastModified} **\n", false );
+                                       # start with a shorter timeout for initial testing
+                                       # header( "Cache-Control: s-maxage=2678400, must-revalidate, max-age=0" );
+                                       header( "Cache-Control: s-maxage=18000, must-revalidate, max-age=0" );
+                               }
                        } else {
                                # We do want clients to cache if they can, but they *must* check for updates
                                # on revisiting the page.