Denny Vrandecic has submitted this change and it was merged.

Change subject: Config setting for cache duration of entity data.
......................................................................


Config setting for cache duration of entity data.

This introduces $wgWBRepoSettings['dataSquidMaxage'] instead
of using $wgSquidMaxage to determine the cache duration for
the output of Special:EntityData. $wgWBRepoSettings['dataSquidMaxage']
defaults to $wgSquidMaxage, but should be overwritten when and where
$wgSquidMaxage is larger than a few hours, since entity data isn't
automatically purged from HTTP caches.

Change-Id: I1dabe792619c5ebd690bfe3e7bf5cd28eb5f19c9
---
M repo/config/Wikibase.default.php
M repo/includes/specials/SpecialEntityData.php
2 files changed, 18 insertions(+), 8 deletions(-)

Approvals:
  Denny Vrandecic: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/repo/config/Wikibase.default.php b/repo/config/Wikibase.default.php
index da4768c..2bf1276 100644
--- a/repo/config/Wikibase.default.php
+++ b/repo/config/Wikibase.default.php
@@ -30,6 +30,7 @@
  */
 
 return call_user_func( function() {
+       global $wgSquidMaxage;
 
        $defaults = array(
 
@@ -72,6 +73,10 @@
 
                // Should the page names (titles) be normalized against the 
external site
                'normalizeItemByTitlePageNames' => false,
+
+               // Number of seconds for which data output shall be cached.
+               // Note: keep that low, because such caches can not always be 
purged easily.
+               'dataSquidMaxage' => $wgSquidMaxage,
        );
 
        return $defaults;
diff --git a/repo/includes/specials/SpecialEntityData.php 
b/repo/includes/specials/SpecialEntityData.php
index c086a97..368445b 100755
--- a/repo/includes/specials/SpecialEntityData.php
+++ b/repo/includes/specials/SpecialEntityData.php
@@ -89,6 +89,11 @@
        protected $idFormatter = null;
 
        /**
+        * @var int Cache dureation in seconds
+        */
+       protected $maxAge = 0;
+
+       /**
         * @var null|array Associative array from MIME type to format name
         * @note: initialized by initFormats()
         */
@@ -173,6 +178,7 @@
                $this->entityLookup = 
\Wikibase\StoreFactory::getStore()->getEntityLookup();
                $this->dataTypeFactory = $repo->getDataTypeFactory();
                $this->idFormatter = $repo->getIdFormatter();
+               $this->maxAge = \Wikibase\Settings::get( 'dataSquidMaxage' );
 
                $this->showData( $format, $id, $revision );
        }
@@ -606,25 +612,24 @@
         * @param Revision $revision
         */
        public function outputData( $data, $contentType, Revision $revision = 
null ) {
-               global $wgSquidMaxage;
-
                // NOTE: similar code as in RawAction::onView, keep in sync.
 
                $request = $this->getRequest();
                $response = $request->response();
 
-               $maxage = $request->getInt( 'maxage', $wgSquidMaxage );
-               $smaxage = $request->getInt( 'smaxage', $wgSquidMaxage );
+               $maxage = $request->getInt( 'maxage', $this->maxAge );
+               $smaxage = $request->getInt( 'smaxage', $this->maxAge );
 
-               // Sanity: 0 to 30 days. // todo: Hard maximum could be 
configurable somehow.
-               $maxage  = max( 0, min( 60 * 60 * 24 * 30, $maxage ) );
-               $smaxage = max( 0, min( 60 * 60 * 24 * 30, $smaxage ) );
+               // XXX: do we want public caching even for data from old 
revisions?
+               // Sanity: 0 to 31 days. // todo: Hard maximum could be 
configurable somehow.
+               $maxage  = max( 0, min( 60 * 60 * 24 * 31, $maxage ) );
+               $smaxage = max( 0, min( 60 * 60 * 24 * 31, $smaxage ) );
 
                $response->header( 'Content-Type: ' . $contentType . '; 
charset=UTF-8' );
                $response->header( 'Content-Length: ' . strlen( $data ) );
 
                if ( $revision ) {
-                       $response->header( 'Last-Modified: ' . wfTimestamp( 
TS_ISO_8601, $revision->getTimestamp() ) );
+                       $response->header( 'Last-Modified: ' . wfTimestamp( 
TS_RFC2822, $revision->getTimestamp() ) );
                }
 
                //Set X-Frame-Options API results (bug 39180)

-- 
To view, visit https://gerrit.wikimedia.org/r/64281
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I1dabe792619c5ebd690bfe3e7bf5cd28eb5f19c9
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Daniel Kinzler <daniel.kinz...@wikimedia.de>
Gerrit-Reviewer: Aude <aude.w...@gmail.com>
Gerrit-Reviewer: Denny Vrandecic <denny.vrande...@wikimedia.de>
Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to