MediaWiki REL1_33
ResourceFileCache.php
Go to the documentation of this file.
1<?php
30 protected $mCacheWorthy;
31
32 /* @todo configurable? */
33 const MISS_THRESHOLD = 360; // 6/min * 60 min
34
40 public static function newFromContext( ResourceLoaderContext $context ) {
41 $cache = new self();
42
43 if ( $context->getImage() ) {
44 $cache->mType = 'image';
45 } elseif ( $context->getOnly() === 'styles' ) {
46 $cache->mType = 'css';
47 } else {
48 $cache->mType = 'js';
49 }
50 $modules = array_unique( $context->getModules() ); // remove duplicates
51 sort( $modules ); // normalize the order (permutation => combination)
52 $cache->mKey = sha1( $context->getHash() . implode( '|', $modules ) );
53 if ( count( $modules ) == 1 ) {
54 $cache->mCacheWorthy = true; // won't take up much space
55 }
56
57 return $cache;
58 }
59
66 public static function useFileCache( ResourceLoaderContext $context ) {
68 if ( !$wgUseFileCache ) {
69 return false;
70 }
71 // Get all query values
72 $queryVals = $context->getRequest()->getValues();
73 foreach ( $queryVals as $query => $val ) {
74 if ( in_array( $query, [ 'modules', 'image', 'variant', 'version', '*' ] ) ) {
75 // Use file cache regardless of the value of this parameter
76 continue; // note: &* added as IE fix
77 } elseif ( $query === 'skin' && $val === $wgDefaultSkin ) {
78 continue;
79 } elseif ( $query === 'lang' && $val === $wgLanguageCode ) {
80 continue;
81 } elseif ( $query === 'only' && in_array( $val, [ 'styles', 'scripts' ] ) ) {
82 continue;
83 } elseif ( $query === 'debug' && $val === 'false' ) {
84 continue;
85 } elseif ( $query === 'format' && $val === 'rasterized' ) {
86 continue;
87 }
88
89 return false;
90 }
91
92 return true; // cacheable
93 }
94
99 protected function cacheDirectory() {
100 return $this->baseCacheDirectory() . '/resources';
101 }
102
107 public function isCacheWorthy() {
108 if ( $this->mCacheWorthy === null ) {
109 $this->mCacheWorthy = (
110 $this->isCached() || // even stale cache indicates it was cache worthy
111 $this->getMissesRecent() >= self::MISS_THRESHOLD // many misses
112 );
113 }
114
115 return $this->mCacheWorthy;
116 }
117}
and that you know you can do these things To protect your we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights These restrictions translate to certain responsibilities for you if you distribute copies of the or if you modify it For if you distribute copies of such a whether gratis or for a you must give the recipients all the rights that you have You must make sure that receive or can get the source code And you must show them these terms so they know their rights We protect your rights with two and(2) offer you this license which gives you legal permission to copy
$wgLanguageCode
Site language code.
$wgDefaultSkin
Default skin, for new users and anonymous visitors.
$wgUseFileCache
This will cache static pages for non-logged-in users to reduce database traffic on public sites.
Base class for data storage in the file system.
getMissesRecent()
Roughly gets the cache misses in the last hour by unique visitors.
baseCacheDirectory()
Get the base file cache directory.
isCached()
Check if the cache file exists.
ResourceLoader request result caching in the file system.
cacheDirectory()
Get the base file cache directory.
static useFileCache(ResourceLoaderContext $context)
Check if an RL request can be cached.
isCacheWorthy()
Item has many recent cache misses.
static newFromContext(ResourceLoaderContext $context)
Construct an ResourceFileCache from a context.
Object passed around to modules which contains information about the state of a specific loader reque...
do that in ParserLimitReportFormat instead use this to modify the parameters of the image all existing parser cache entries will be invalid To avoid you ll need to handle that somehow(e.g. with the RejectParserCacheValue hook) because MediaWiki won 't do it for you. & $defaults also a ContextSource after deleting those rows but within the same transaction you ll probably need to make sure the header is varied on and they can depend only on the ResourceLoaderContext $context
Definition hooks.txt:2848
null for the local wiki Added should default to null in handler for backwards compatibility add a value to it if you want to add a cookie that have to vary cache options can modify $query
Definition hooks.txt:1617
$cache
Definition mcc.php:33