mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Popups
synced 2024-11-28 01:10:04 +00:00
35 lines
1.3 KiB
Markdown
35 lines
1.3 KiB
Markdown
|
# 9. Utilize browser caching
|
||
|
|
||
|
Date: 05/24/2017
|
||
|
|
||
|
## Status
|
||
|
|
||
|
Accepted
|
||
|
|
||
|
## Context
|
||
|
|
||
|
We needed to make sure we're not overloading the servers with excessive
|
||
|
requests. We wanted to find a way to serve fresh resources while keeping
|
||
|
the back-end happy.
|
||
|
|
||
|
## Decision
|
||
|
|
||
|
Page Previews will leverage the browser's cache rather than maintaining its own.
|
||
|
We rely on Grade A browsers implementing HTTP caching correctly and their
|
||
|
vendors making accessing them as efficient as possible in order to avoid
|
||
|
incurring the incidental complexity of writing our own cache in JavaScript.
|
||
|
|
||
|
We'll set appropriate `Cache-Control` HTTP headers for both the MediaWiki API,
|
||
|
via [the `maxage` and `smaxage` main module parameters][0], and the RESTBase page
|
||
|
summary endpoint with the help of the Services team.
|
||
|
|
||
|
## Consequences
|
||
|
|
||
|
Resources fetched from the MediaWiki API [will be cached for 5 minutes in public
|
||
|
caches and the browsers's cache][1]. Unlike the MediaWiki API, resources fetched
|
||
|
from the RESTBase endpoint, [will be cached for 14 days in public caches][2].
|
||
|
|
||
|
[0]: https://www.mediawiki.org/wiki/API:Main_module#Parameters
|
||
|
[1]: https://github.com/wikimedia/mediawiki-extensions-Popups/blob/86075fba/src/gateway/mediawiki.js#L15
|
||
|
[2]: https://github.com/wikimedia/mediawiki-services-restbase-deploy/blob/9a86d4ce/scap/templates/config.yaml.j2#L100-L101
|