aboutsummaryrefslogtreecommitdiffstats
path: root/includes
diff options
context:
space:
mode:
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>2024-06-10 13:46:03 +0000
committerGerrit Code Review <gerrit@wikimedia.org>2024-06-10 13:46:03 +0000
commitae43ba9202551fcbafe485ed908ab9a511c7a089 (patch)
tree19c6edc39aacfdc6ac40a1c9864095b5cd4202b1 /includes
parent851dd097ddb30710eddd582cd9657fac4ca82e3b (diff)
parentb99e249112f53b5730300bd0d36f2c10345b8c98 (diff)
downloadmediawikicore-ae43ba9202551fcbafe485ed908ab9a511c7a089.tar.gz
mediawikicore-ae43ba9202551fcbafe485ed908ab9a511c7a089.zip
Merge "ResourceLoader: Add 1min grace via stale-while-revalidate Cache-Control" into REL1_39
Diffstat (limited to 'includes')
-rw-r--r--includes/ResourceLoader/ResourceLoader.php8
1 files changed, 7 insertions, 1 deletions
diff --git a/includes/ResourceLoader/ResourceLoader.php b/includes/ResourceLoader/ResourceLoader.php
index 818521f48b02..6b4752a89ced 100644
--- a/includes/ResourceLoader/ResourceLoader.php
+++ b/includes/ResourceLoader/ResourceLoader.php
@@ -935,7 +935,13 @@ class ResourceLoader implements LoggerAwareInterface {
header( 'Cache-Control: private, no-cache, must-revalidate' );
header( 'Pragma: no-cache' );
} else {
- header( "Cache-Control: public, max-age=$maxage, s-maxage=$maxage" );
+ // T132418: When a resource expires mid-way a browsing session, prefer to renew it in
+ // the background instead of blocking the next page load (eg. startup module, or CSS).
+ $staleDirective = ( $maxage > self::MAXAGE_RECOVER
+ ? ", stale-while-revalidate=" . min( 60, intval( $maxage / 2 ) )
+ : ''
+ );
+ header( "Cache-Control: public, max-age=$maxage, s-maxage=$maxage" . $staleDirective );
header( 'Expires: ' . ConvertibleTimestamp::convert( TS_RFC2822, time() + $maxage ) );
}
foreach ( $extra as $header ) {