Middleware library for Concrete5 to use HTTP/2 pushes
Include library to your composer.json
composer require xanweb/c5-http2-server-push
Add the service provider and middleware to application/config/app.php
return [
'providers' => [
'xw_http2_server_push' => '\Xanweb\ServerPush\ServiceProvider'
],
'middleware' => [
'xw_http2_server_push' => '\Xanweb\ServerPush\Middleware\Http2ServerPushMiddleware'
]
];
Make sure you are loading vendor autoload application/bootstrap/autoload.php
<?php
defined('C5_EXECUTE') or die('Access Denied.');
/*
* ----------------------------------------------------------------------------
* Load all composer autoload items.
* ----------------------------------------------------------------------------
*/
// If the checker class is already provided, likely we have been included in a separate composer project
if (!class_exists(\DoctrineXml\Checker::class)) {
// Otherwise, lets try to load composer ourselves
if (!@include(DIR_BASE_CORE . '/' . DIRNAME_VENDOR . '/autoload.php')) {
echo 'Third party libraries not installed. Make sure that composer has required libraries in the concrete/ directory.';
die(1);
}
}
if (file_exists(DIR_BASE . '/' . DIRNAME_VENDOR . '/autoload.php')) {
include_once (DIR_BASE . '/' . DIRNAME_VENDOR . '/autoload.php');
}
use \Fig\Link\Link;
use \Fig\Link\Relations;
// Example with Font Preload
$link = (new Link(Relations::REL_PRELOAD, '/path/to/font.woff2'))
->withAttribute('as', 'font')
->withAttribute('type', 'font/woff2');
app('http2/server-push')->queueLink($link);