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(