Release status: stable
|Description||Logs perceived latency measurements from client-side|
|Author(s)||Patrick Reilly, Ori Livneh, Asher Feldman, Timo Tijhof, Ian Marlier|
|Compatibility policy||Snapshots releases along with MediaWiki. Master is not backward compatible.|
|License||GNU General Public License 2.0 or later|
|Quarterly downloads||14 (Ranked 155th)|
|Public wikis using||805 (Ranked 289th)|
|Translate the NavigationTiming extension if it is available at translatewiki.net|
|Issues||Open tasks · Report a bug|
The NavigationTiming extension measures perceived latency in browsers, via the W3C Navigation Timing API), which "defines an interface for web applications to access timing information related to navigation and elements".
- are from a modern browser, as defined by the Grade A capability check (90%+ of traffic).
- have the Navigation Timing API, (98% of browser traffic in 2022, 95% in Nov 2017)
- reach the "page loaded" event (99%+ of page loads).
- are in the random sample (configurable).
How is the information used?Edit
Engineers at Wikimedia Foundation intend to use this data to assess the impact (positive and negative) of changes to application code and server configuration. Thus guiding on-going work on site performance.
- Download and place the file(s) in a directory called
- Add the following code at the bottom of your
wfLoadExtension( 'NavigationTiming' ); $wgNavigationTimingSamplingFactor = 1; // 100% (1 of every 1)
- Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.
Oversampling allows us to selectively sample a larger portion of the traffic coming from a particular geography, or with a specific User Agent string in the browser.
Use cases for this include:
- obtain detailed observations of a change in performance, based data center location
- evaluate a change in performance due to browser upgrades (e.g. upstream Firefox 57 released an internal change intended to improve performance).
Oversampling is configured using the
$wgNavigationTimingOversampleFactor variable. This variable is an associative array, and the keys that are checked are "geo" and "userAgent".
If the user's country code is included in the "geo" array, then a sample is taken with frequency 1/samplerate. If the user's browser has a User Agent string that matches a key in the userAgent array, then a sample is taken with frequency 1/samplerate. No more than one oversample is taken for a given pageload.
If the page load is oversampled, the emitted event will include these properties:
oversampleReason: string, whose contents are a JSON array of reasons that the oversample happened. These will be of the form "geo:XX" (where XX is the matching country code), or "ua:ABCDEF" (where ABCDEF is the matching browser's User Agent string)
About the data we collect:
- Explainer of navtiming metrics, Wikitech.
- Wikimedia Grafana: Navigation Timing dashboard, grafana.wikimedia.org
- Performance infrastructure, Wikitech.
About the Navigation Timing API in web browsers:
|This extension is being used on one or more Wikimedia projects. This probably means that the extension is stable and works well enough to be used by such high-traffic websites. Look for this extension's name in Wikimedia's CommonSettings.php and InitialiseSettings.php configuration files to see where it's installed. A full list of the extensions installed on a particular wiki can be seen on the wiki's Special:Version page.|