Use getDefinitionSummary() in ResourceLoaderULSJsonMessageModule
* Fix inaccurate class comment that was copied from an unrelated module in MediaWiki core. * Remove use of deprecated getModifiedTime(). While this implementation was straight forward, it is more reliable and deterministic to use a content hash because timestamps are not tracked by Git. This currently causes needless cache invalidation for all users at Wikimedia every week because git-clone starts with fresh timestamps on disk. I'm not using enableModuleContentVersion() right now because calling getScript() reads all files into memory which is more expensive than simply hashing the files. Especially because safeFileHash() is backed by an APC cache via FileContentsHasher. This matches the implementation in core ResourceLoaderFileModule. Change-Id: If9aaefa6a3cf047c6c36e1cdd0f350412d59c849
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
<?php
|
||||
/**
|
||||
* ResourceLoaderModule subclass for loading the json
|
||||
* based localization to client-side code.
|
||||
* ResourceLoader module for client-side loading of json-based localization.
|
||||
*
|
||||
* @file
|
||||
* @ingroup Extensions
|
||||
@@ -9,8 +8,7 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* Packages a remote schema as a JavaScript ResourceLoader module.
|
||||
* @since 2013.11
|
||||
* ResourceLoader module for client-side loading of json-based localization.
|
||||
*/
|
||||
class ResourceLoaderULSJsonMessageModule extends ResourceLoaderModule {
|
||||
/**
|
||||
@@ -32,25 +30,24 @@ class ResourceLoaderULSJsonMessageModule extends ResourceLoaderModule {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the last modified timestamp of this module.
|
||||
* The last modified timestamp controls caching.
|
||||
* @param ResourceLoaderContext $context
|
||||
* @return int Unix timestamp.
|
||||
* @return array
|
||||
*/
|
||||
public function getModifiedTime( ResourceLoaderContext $context ) {
|
||||
public function getDefinitionSummary( ResourceLoaderContext $context ) {
|
||||
$code = $context->getLanguage();
|
||||
if ( !Language::isValidCode( $code ) ) {
|
||||
$code = 'en';
|
||||
}
|
||||
|
||||
$mtimes = array_map(
|
||||
'filemtime',
|
||||
$fileHashes = array_map(
|
||||
[ __CLASS__, 'safeFileHash' ],
|
||||
ULSJsonMessageLoader::getFilenames( $code )
|
||||
);
|
||||
// Make sure we have at least one entry
|
||||
$mtimes[] = 1;
|
||||
|
||||
return max( $mtimes );
|
||||
$summary = parent::getDefinitionSummary( $context );
|
||||
$summary[] = [
|
||||
'fileHashes' => $fileHashes
|
||||
];
|
||||
return $summary;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user