/**
* ResourceLoader will not generate URLs whose query string is more than
* this many characters long, and will instead use multiple requests with
- * shorter query strings. This degrades performance, but may be needed based
- * on the query string limit supported by your web server and/or your user's
- * web browsers.
+ * shorter query strings. Using multiple requests may degrade performance,
+ * but may be needed based on the query string limit supported by your web
+ * server and/or your user's web browsers.
*
+ * Default: `2000`.
+ *
+ * @see ResourceLoaderStartUpModule::getMaxQueryLength
* @since 1.17
* @var int
*/
-$wgResourceLoaderMaxQueryLength = 2000;
+$wgResourceLoaderMaxQueryLength = false;
/**
* If set to true, JavaScript modules loaded from wiki pages will be parsed
return 'MediaWikiModuleStore:' . $this->getConfig()->get( 'DBname' );
}
+ /**
+ * @see $wgResourceLoaderMaxQueryLength
+ * @return int
+ */
+ private function getMaxQueryLength() : int {
+ $len = $this->getConfig()->get( 'ResourceLoaderMaxQueryLength' );
+ // - Ignore -1, which in MW 1.34 and earlier was used to mean "unlimited".
+ // - Ignore invalid values, e.g. non-int or other negative values.
+ if ( $len === false || $len < 0 ) {
+ // Default
+ $len = 2000;
+ }
+ return $len;
+ }
+
/**
* Get the key on which the JavaScript module cache (mw.loader.store) will vary.
*
$mwLoaderPairs = [
'$VARS.reqBase' => $context->encodeJson( $context->getReqBase() ),
'$VARS.baseModules' => $context->encodeJson( $this->getBaseModules() ),
- '$VARS.maxQueryLength' => $context->encodeJson(
- $conf->get( 'ResourceLoaderMaxQueryLength' )
- ),
+ '$VARS.maxQueryLength' => $context->encodeJson( $this->getMaxQueryLength() ),
// The client-side module cache can be disabled by site configuration.
// It is also always disabled in debug mode.
'$VARS.storeEnabled' => $context->encodeJson(