From ba1da92650a9405df4459b21fd97c734496bec01 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Mon, 29 Jan 2018 15:14:19 -0800 Subject: [PATCH] resourceloader: Disable minify for embedded 'user.options' module Follows-up 6fa489392815 (T84960), which disabled minification for 'user.tokens'. In 2014 'user.tokens' module was changed to change tokens on every page view, even for the same user within a short period of time. This led to a huge minify-cache growth, and we subsequently disabled caching for its minification result. Since then, we have also done: * Disable minification for 'user.tokens' more generally, given that it's just a simple JSON blob and we already pass down the 'debug' mode flag down to the creation of that blob, so there's virtually nothing to left to minify. * Disable minification for mw.config.set(). Config values are exported by ResourceLoaderClientHtml and not part of any module. Given that since 2015 we minify per-module and not per-response (b7eb243d92) that means config data naturally doesn't go through minification, which is good, because just like for 'user.tokens', the config data is JSON which is already created without whitespace. Minification would be pointless. However, 'user.options' is still being minified and cached, and makes up about 25% of the 'resourceloader:minify-js.*' keys in APC on Wikimedia servers. Unlike 'user.tokens', the minify cache for 'user.options' does actually get used by subsequent page views from the same user (unless preferences changed). However, it isn't useful because it's plain JSON and already compressed enough. Besides, the blob is so small that it's not worth the overhead of cache-checking. If we would want to minify it, I'd recommend we re-minify each view without cache. Change-Id: Ic0ffb0e23df9b40e2c1283c89bd876a5c0555951 --- includes/resourceloader/ResourceLoaderUserOptionsModule.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/resourceloader/ResourceLoaderUserOptionsModule.php b/includes/resourceloader/ResourceLoaderUserOptionsModule.php index a15d310bcd..458c44d6e7 100644 --- a/includes/resourceloader/ResourceLoaderUserOptionsModule.php +++ b/includes/resourceloader/ResourceLoaderUserOptionsModule.php @@ -54,7 +54,7 @@ class ResourceLoaderUserOptionsModule extends ResourceLoaderModule { return Xml::encodeJsCall( 'mw.user.options.set', [ $context->getUserObj()->getOptions( User::GETOPTIONS_EXCLUDE_DEFAULTS ) ], ResourceLoader::inDebugMode() - ); + ) . ResourceLoader::FILTER_NOMIN; } /** -- 2.20.1