Always disable browser caching of pages
authorAlexander Ebert <ebert@woltlab.com>
Wed, 28 Sep 2016 10:04:20 +0000 (12:04 +0200)
committerAlexander Ebert <ebert@woltlab.com>
Wed, 28 Sep 2016 10:04:20 +0000 (12:04 +0200)
This affects the HTML send to the browser only and has no influence of
any other assets, such as JavaScript or images.

com.woltlab.wcf/option.xml
constants.php
wcfsetup/install/files/lib/system/WCFSetup.class.php
wcfsetup/install/files/lib/util/HeaderUtil.class.php
wcfsetup/install/files/options.inc.php
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml

index 86d9637b3661ef7025749964d29d459674463122..034d3d23849ce925511cf53dc145511f9311305b 100644 (file)
@@ -534,11 +534,6 @@ private:wcf.acp.option.exception_privacy.private</selectoptions>
                        <!-- /general.system.cookie-->
                        
                        <!-- general.system.http -->
-                       <option name="http_enable_no_cache_headers">
-                               <categoryname>general.system.http</categoryname>
-                               <optiontype>boolean</optiontype>
-                               <defaultvalue>1</defaultvalue>
-                       </option>
                        <option name="http_send_x_frame_options">
                                <categoryname>general.system.http</categoryname>
                                <optiontype>boolean</optiontype>
@@ -1550,6 +1545,7 @@ DESC:wcf.global.sortOrder.descending</selectoptions>
        
        <delete>
                <option name="cache_source_memcached_use_pconnect" />
+               <option name="http_enable_no_cache_headers" />
                <option name="http_gzip_level" />
                <option name="enable_pluginstore_widget" />
                <option name="mail_use_formatted_address" />
index 1d34370db80a714e22a57489fa20061b292c2e69..2482b5e06a592821c8a63d8a3d455b5fb9033ff1 100644 (file)
@@ -66,7 +66,6 @@ define('IMAGE_ADAPTER_TYPE', 'gd');
 define('SEARCH_ENGINE', 'mysql');
 define('EXCEPTION_PRIVACY', 'public');
 define('COOKIE_PREFIX', 'wcf21_');
-define('HTTP_ENABLE_NO_CACHE_HEADERS', 0);
 define('HTTP_SEND_X_FRAME_OPTIONS', 1);
 define('HTTP_ENABLE_GZIP', 1);
 define('PACKAGE_SERVER_AUTH_CODE', '');
index a11dd8a64d48cf5b2974bfb95b0f07b8a472ff1e..bc4c666ddd8d92b42b57679efd8c4f6c7e3ce8cf 100644 (file)
@@ -28,7 +28,6 @@ use wcf\util\XML;
 
 // define
 define('PACKAGE_ID', 0);
-define('HTTP_ENABLE_NO_CACHE_HEADERS', 0);
 define('HTTP_ENABLE_GZIP', 0);
 define('HTTP_GZIP_LEVEL', 0);
 define('HTTP_SEND_X_FRAME_OPTIONS', 0);
index 347332a420ce61cc94afff2edeb4af3db337a26f..e7671f0d238ef71164775aa46fea3711bc73f980 100644 (file)
@@ -55,13 +55,9 @@ final class HeaderUtil {
                @header('Content-Type: text/html; charset=UTF-8');
                
                // send no cache headers
-               if (HTTP_ENABLE_NO_CACHE_HEADERS && !WCF::getSession()->spiderID) {
+               if (!WCF::getSession()->spiderID) {
                        self::sendNoCacheHeaders();
                }
-               else if (!empty($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox') !== false) {
-                       // Firefox serves pages from cache, causing certain HTML elements to stay in an outdated state
-                       @header('Cache-Control: no-store');
-               }
                
                if (HTTP_ENABLE_GZIP && !defined('HTTP_DISABLE_GZIP')) {
                        if (function_exists('gzcompress') && !@ini_get('zlib.output_compression') && !@ini_get('output_handler') && isset($_SERVER['HTTP_ACCEPT_ENCODING']) && strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
@@ -93,7 +89,7 @@ final class HeaderUtil {
        public static function sendNoCacheHeaders() {
                @header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
                @header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
-               @header('Cache-Control: no-cache, must-revalidate');
+               @header('Cache-Control: max-age=0, no-cache, no-store, must-revalidate');
                @header('Pragma: no-cache');
        }
        
index 019c6713b0434e433d40a53bd5abbffba3f415bc..3e2c577eab63a329a39aeb5d6d03021360b60c52 100644 (file)
@@ -12,7 +12,6 @@ define('COOKIE_PREFIX', 'wsc30_');
 define('COOKIE_PATH', '');
 define('COOKIE_DOMAIN', '');
 
-define('HTTP_ENABLE_NO_CACHE_HEADERS', 0);
 define('HTTP_ENABLE_GZIP', 0);
 define('HTTP_GZIP_LEVEL', 1);
 define('HTTP_SEND_X_FRAME_OPTIONS', 0);
index 8418ed0c72a83eafda546f51e3cce4c62f361b6e..b6e7ce109331bea842f75461e04c478fad5791a9 100644 (file)
                <item name="wcf.acp.option.error.tooLow"><![CDATA[Der angegebene Wert ist zu gering.{if $option->minvalue !== null} Der minimale Wert ist {#$option->minvalue}.{/if}]]></item>
                <item name="wcf.acp.option.http_enable_gzip"><![CDATA[Gzip-Komprimierung aktivieren]]></item>
                <item name="wcf.acp.option.http_enable_gzip.description"><![CDATA[Aktiviert die Komprimierung der Inhalte bei der Übertragung vom Server an den Client. Dies reduziert den Traffic und kann den Ladevorgang erheblich beschleunigen.]]></item>
-               <item name="wcf.acp.option.http_enable_no_cache_headers"><![CDATA[Seitencaching im Client-Browser verhindern]]></item>
-               <item name="wcf.acp.option.http_enable_no_cache_headers.description"><![CDATA[Verhindert zuverlässig das Cachen von einzelnen Seiten und sorgt somit dafür, dass beim Seitenaufruf immer die neueste Version der Seite geladen wird. Führt umgekehrt aber zu höherem Traffic und mehr Serverlast.]]></item>
                <item name="wcf.acp.option.http_send_x_frame_options"><![CDATA[Einbindung in einem Frame verhindern]]></item>
                <item name="wcf.acp.option.http_send_x_frame_options.description"><![CDATA[Sendet den <a href="{@$__wcf->getPath()}acp/dereferrer.php?url={'http://de.wikipedia.org/wiki/Clickjacking'|rawurlencode}" class="externalURL">„X-Frame-Options“</a> Header um die Einbettung dieser Seite in einem Frame zu verhindern (sendet „SAMEORIGIN“).]]></item>
                <item name="wcf.acp.option.image_adapter_type"><![CDATA[Grafik-Bibliothek]]></item>
index cf7291e7df0debf04eec6eca325f6545ba4bdfe0..0d0e4ebbb3fb4f62f918fb73825f294e6092b82c 100644 (file)
@@ -896,8 +896,6 @@ Examples for medium ID detection:
                <item name="wcf.acp.option.error.tooLow"><![CDATA[Under the minimum value{if $option->minvalue !== null} of {#$option->minvalue}{/if}.]]></item>
                <item name="wcf.acp.option.http_enable_gzip"><![CDATA[Enable gzip-compression]]></item>
                <item name="wcf.acp.option.http_enable_gzip.description"><![CDATA[Compresses content transferred to users, reduces traffic and page load time. Does not affect files, e.g. images.]]></item>
-               <item name="wcf.acp.option.http_enable_no_cache_headers"><![CDATA[Prevent browser-caching]]></item>
-               <item name="wcf.acp.option.http_enable_no_cache_headers.description"><![CDATA[Prevents browser’s caching ensuring your users are always viewing the latest content. Increases both traffic and server load.]]></item>
                <item name="wcf.acp.option.http_send_x_frame_options"><![CDATA[Disallow embedding in a frame]]></item>
                <item name="wcf.acp.option.http_send_x_frame_options.description"><![CDATA[Sends the <a href="{@$__wcf->getPath()}acp/dereferrer.php?url={'http://en.wikipedia.org/wiki/Clickjacking'|rawurlencode}" class="externalURL">“X-Frame-Options”</a> header to prevent 3rd party sites from embedding this site in a frame (sends “SAMEORIGIN”).]]></item>
                <item name="wcf.acp.option.image_adapter_type"><![CDATA[Graphics Library]]></item>