Current configuration on the wiki
Find a file
Dan Duvall d83a7bcd09 Cache loading of SettingsBuilder sources
The `SettingsBuilder` now accepts a PSR-16 cache interface with which to
store and query settings before attempting to load from each source. By
default, no cache is used, but any object that implements the
`Psr\SimpleCache\CacheInterface` may be provided to the constructor.

An explicit dependency on "psr/simple-cache" has been added to
`composer.json`. Note that this dependency already existed in vendor
albeit it as a transitive one.

An APCu based `SharedMemoryCache` adapter is provided as a canonical
PSR-16 compliant interface for production use.

Sources are now queued by the `SettingsBuilder` when calling `load()`.
If a cache interface has been provided, and the source is considered
cacheable (implements `CacheableSource`), then it is wrapped as a
`CachedSource` which will query the cache first before loading from the
wrapped source.

Cache stampedes are mitigated using probabilistic early expiry. The
implementation for this was partially based on symfony/cache-contract
source code but also from the Wikipedia article and paper referenced
therein.

See https://en.wikipedia.org/wiki/Cache_stampede#Probabilistic_early_expiration

Bug: T294748
Change-Id: I52ab3899731546876ee58265bd4a1927886746dc
2021-11-29 12:54:59 -08:00
.phan
.pipeline
cache
docs
extensions
images
includes Cache loading of SettingsBuilder sources 2021-11-29 12:54:59 -08:00
languages Merge "Use UndeletePage from Special:Undelete" 2021-11-29 17:54:12 +00:00
maintenance getReplicaServer: Handle clusters 2021-11-28 15:13:16 +01:00
mw-config
resources Merge "Send 'variant' API param for live preview" 2021-11-23 10:44:14 +00:00
skins
tests Cache loading of SettingsBuilder sources 2021-11-29 12:54:59 -08:00
.dockerignore
.editorconfig
.eslintignore build: Fix include of en.json/qqq.json in .eslintignore 2021-11-19 21:00:35 +00:00
.eslintrc.json
.fresnel.yml
.gitattributes
.gitignore
.gitreview
.mailmap
.phpcs.xml Remove $wgShellLocale, always use C 2021-09-24 17:25:01 -07:00
.stylelintrc.json
.svgo.config.js
.vsls.json
api.php
autoload.php Merge "Rename Special:Delete/Protect to Special:DeletePage/ProtectPage" 2021-11-18 18:52:30 +00:00
CODE_OF_CONDUCT.md
composer.json Cache loading of SettingsBuilder sources 2021-11-29 12:54:59 -08:00
composer.local.json-sample
COPYING
CREDITS
DEVELOPERS.md docs: Document in DEVELOPERS.md how to stop or restart the thing 2021-10-12 16:52:44 +00:00
docker-compose.yml docker: Update dev images to newer version with Composer 2.x 2021-10-23 02:21:33 +01:00
FAQ
Gruntfile.js
HISTORY Move RELEASE-NOTES-1.37 into HISTORY 2021-11-18 15:45:00 +00:00
img_auth.php
index.php
INSTALL
jsduck.json
load.php resourceloader: Avoid repeatly calls to getter functions 2021-09-26 01:55:13 +02:00
opensearch_desc.php
package-lock.json build: Update eslint-config-wikimedia to 0.21.0 2021-11-09 21:08:55 +00:00
package.json build: Update eslint-config-wikimedia to 0.21.0 2021-11-09 21:08:55 +00:00
phpunit.xml.dist Revert "Discover unit tests in "Unit" directory" 2021-11-21 14:16:41 +01:00
README.md
RELEASE-NOTES-1.38 Add Makhuwa (vmw) to Names.php 2021-11-29 09:34:09 +02:00
rest.php
SECURITY
thumb.php
thumb_handler.php
UPGRADE

MediaWiki

MediaWiki is a free and open-source wiki software package written in PHP. It serves as the platform for Wikipedia and the other Wikimedia projects, used by hundreds of millions of people each month. MediaWiki is localised in over 350 languages and its reliability and robust feature set have earned it a large and vibrant community of third-party users and developers.

MediaWiki is:

  • feature-rich and extensible, both on-wiki and with hundreds of extensions;
  • scalable and suitable for both small and large sites;
  • simple to install, working on most hardware/software combinations; and
  • available in your language.

For system requirements, installation, and upgrade details, see the files RELEASE-NOTES, INSTALL, and UPGRADE.

MediaWiki is the result of global collaboration and cooperation. The CREDITS file lists technical contributors to the project. The COPYING file explains MediaWiki's copyright and license (GNU General Public License, version 2 or later). Many thanks to the Wikimedia community for testing and suggestions.