xanweb/c5-http2-server-push

A middleware package for Concrete5 to use HTTP/2 pushes

v1.1 2020-02-19 16:57 UTC

This package is auto-updated.

Last update: 2024-03-26 23:31:17 UTC


README

Latest Version on Packagist Software License

Middleware library for Concrete5 to use HTTP/2 pushes

Installation

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');
}

Usage

    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);