Use wfGetCache( CACHE_ANYTHING ) instead of $wgMemc to store the result of ResourceLoader::filter(). Speeds up cold cache view of the main page on a non-APC default installation by a factor of 2.3 (measured using siege, no concurrency, URL list captured from Firefox, server = my laptop).

This commit is contained in:
Tim Starling 2010-11-19 01:40:00 +00:00
parent f756d9f9e8
commit 04b2b29db7

View file

@ -119,8 +119,6 @@ class ResourceLoader {
* @return String: Filtered data
*/
protected function filter( $filter, $data ) {
global $wgMemc;
wfProfileIn( __METHOD__ );
// For empty/whitespace-only data or for unknown filters, don't perform
@ -132,9 +130,11 @@ class ResourceLoader {
return $data;
}
// Try for Memcached hit
// Try for cache hit
// Use CACHE_ANYTHING since filtering is very slow compared to DB queries
$key = wfMemcKey( 'resourceloader', 'filter', $filter, md5( $data ) );
$cacheEntry = $wgMemc->get( $key );
$cache = wfGetCache( CACHE_ANYTHING );
$cacheEntry = $cache->get( $key );
if ( is_string( $cacheEntry ) ) {
wfProfileOut( __METHOD__ );
return $cacheEntry;
@ -159,7 +159,7 @@ class ResourceLoader {
}
// Save filtered text to Memcached
$wgMemc->set( $key, $result );
$cache->set( $key, $result );
wfProfileOut( __METHOD__ );