2017-06-21 22:49:35 +00:00
|
|
|
# 9. Utilize browser caching
|
|
|
|
|
2018-03-22 16:09:13 +00:00
|
|
|
Date: 24/05/2017
|
2017-06-21 22:49:35 +00:00
|
|
|
|
|
|
|
## 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
|