From 424eb75d77f7a7513cd59083198f5b3a407a8715 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Thu, 26 Sep 2019 22:57:50 +0100 Subject: [PATCH] maintenance: Enable gzip in router.php for static files Bug: T233992 Change-Id: Ie401180ac968210c9f923ad920bf15955c8551d7 --- maintenance/dev/includes/router.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/maintenance/dev/includes/router.php b/maintenance/dev/includes/router.php index d767df0d8b..bb600bf92f 100644 --- a/maintenance/dev/includes/router.php +++ b/maintenance/dev/includes/router.php @@ -74,10 +74,22 @@ if ( $ext == 'php' ) { } else { header( "Content-Type: $mime" ); } - header( "Content-Length: " . filesize( $file ) ); - // Stream that out to the browser - $f = fopen( $file, 'rb' ); - fpassthru( $f ); + + $content = file_get_contents( $file ); + + header( 'Vary: Accept-Encoding' ); + $acceptGzip = preg_match( '/\bgzip\b/', $_SERVER['HTTP_ACCEPT_ENCODING'] ?? '' ); + if ( $acceptGzip && + // Don't compress binary static files (e.g. png) + preg_match( '/text|javascript|json|css|xml|svg/', $mime ) && + // Tiny files tend to grow instead of shrink. – + strlen( $content ) > 150 + ) { + $content = gzencode( $content, 9 ); + header( 'Content-Encoding: gzip' ); + } + header( "Content-Length: " . strlen( $content ) ); + echo $content; return true; } -- 2.20.1