From 942235b6bc6f3b3258732a17e41c99584ffb77e3 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Fri, 6 May 2016 22:02:47 +0900 Subject: [PATCH] Enable HTTP/2 server push for CSS and JS resources --- .../FrontEndFileHandler.class.php | 24 +++++++++++++++++++ common/defaults/config.php | 1 + 2 files changed, 25 insertions(+) diff --git a/classes/frontendfile/FrontEndFileHandler.class.php b/classes/frontendfile/FrontEndFileHandler.class.php index b31cf12df..e66029d16 100644 --- a/classes/frontendfile/FrontEndFileHandler.class.php +++ b/classes/frontendfile/FrontEndFileHandler.class.php @@ -440,6 +440,18 @@ class FrontEndFileHandler extends Handler } } } + + // Enable HTTP/2 server push for JS resources. + if ($finalize && config('view.server_push') && strncmp($_SERVER['SERVER_PROTOCOL'], 'HTTP/2', 6) === 0) + { + foreach ($result as $resource) + { + if ($resource['file'][0] === '/' && $resource['file'][1] !== '/') + { + header(sprintf('Link: <%s>; rel=preload; as=style', $resource['file']), false); + } + } + } return $result; } @@ -532,6 +544,18 @@ class FrontEndFileHandler extends Handler } } } + + // Enable HTTP/2 server push for JS resources. + if ($finalize && config('view.server_push') && strncmp($_SERVER['SERVER_PROTOCOL'], 'HTTP/2', 6) === 0) + { + foreach ($result as $resource) + { + if ($resource['file'][0] === '/' && $resource['file'][1] !== '/') + { + header(sprintf('Link: <%s>; rel=preload; as=script', $resource['file']), false); + } + } + } return $result; } diff --git a/common/defaults/config.php b/common/defaults/config.php index 05c9426dd..6e614bf75 100644 --- a/common/defaults/config.php +++ b/common/defaults/config.php @@ -74,6 +74,7 @@ return array( 'view' => array( 'minify_scripts' => 'common', 'concat_scripts' => 'none', + 'server_push' => false, 'use_gzip' => false, ), 'admin' => array(