From cc506990e031c05999c38d8294c68bb96c081498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Tue, 15 Jan 2019 21:39:45 +0100 Subject: [PATCH] Add caching for theming inline js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- apps/theming/lib/InlineJS.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/theming/lib/InlineJS.php b/apps/theming/lib/InlineJS.php index 7d9557e1de..828ada8d0d 100644 --- a/apps/theming/lib/InlineJS.php +++ b/apps/theming/lib/InlineJS.php @@ -25,6 +25,7 @@ declare(strict_types=1); namespace OCA\Theming; use OCP\AppFramework\Http\Inline\IInline; +use OCP\ICache; use OCP\IConfig; class InlineJS implements IInline { @@ -34,15 +35,21 @@ class InlineJS implements IInline { private $config; /** @var Util */ private $util; + /** @var ICache */ + private $cache; - public function __construct(IConfig $config, Util $util, ThemingDefaults $themingDefaults) { + public function __construct(IConfig $config, Util $util, ThemingDefaults $themingDefaults, ICache $cache) { $this->themingDefaults = $themingDefaults; $this->config = $config; $this->util = $util; + $this->cache = $cache; } function getData(): string { $cacheBusterValue = $this->config->getAppValue('theming', 'cachebuster', '0'); + if ($this->cache->hasKey('theming-inline-' . $cacheBusterValue)) { + return $this->cache->get('theming-inline-' . $cacheBusterValue); + } $responseJS = 'document.addEventListener(\'DOMContentLoaded\', function() { window.OCA.Theming = { name: ' . json_encode($this->themingDefaults->getName()) . ', @@ -55,6 +62,8 @@ class InlineJS implements IInline { cacheBuster: ' . json_encode($cacheBusterValue) . ' }; });'; + $this->cache->clear('theming-inline-'); + $this->cache->set('theming-inline-' . $cacheBusterValue, $responseJS); return $responseJS; } }