coliving / laravel-http2serverpush
A HTTP2 Server Push Middleware for Laravel 6 & 7
Requires
- php: ^5.5|^7.0|^7.3
- illuminate/http: ^5.3|^6.0|^7.0
- illuminate/support: ^5.3|^6.0|^7.0
- symfony/css-selector: ^2.7|^3.0|^4.0
- symfony/dom-crawler: ^2.7|^3.0|^4.0
Requires (Dev)
- phpunit/phpunit: ^4.0|^5.0|^7.1
- scrutinizer/ocular: ^1.1|^1.6
README
Server Push Middleware for Laravel 5
Server Push is a HTTP/2 concept which allows the server to speculatively start sending resources to the client. This can potentially speed up initial page load times: the browser doesn't have to parse the HTML page and find out which other resources to load, instead the server can start sending them immediately. (source)
This package aims to provide the easiest experience for adding Server Push to your responses.
Simply route your requests through the AddHttp2ServerPush
middleware and it will automatically create and attach the Link
headers necessary to implement Server Push for your CSS, JS and Image assets.
Installation
You can install the package via composer:
$ composer require jacobbennett/laravel-http2serverpush
Next you must add the \JacobBennett\Http2ServerPush\Middleware\AddHttp2ServerPush
-middleware to the kernel. Adding it to the web group is recommeneded as API's do not have assets to push.
// app/Http/Kernel.php ... protected $middlewareGroups = [ 'web' => [ ... \JacobBennett\Http2ServerPush\Middleware\AddHttp2ServerPush::class, ... ], ... ];
Publish config
php artisan vendor:publish --provider="JacobBennett\Http2ServerPush\ServiceProvider"
Usage
When you route a request through the AddHttp2ServerPush
middleware, the response is scanned for any link
, script
or img
tags that could benefit from being loaded using Server Push.
These assets will be added to the Link
header before sending the response to the client. Easy!
Note: To push an image asset, it must have one of the following extensions: bmp
, gif
, jpg
, jpeg
, png
or tiff
.
Testing
$ composer test
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email me@jakebennett.net instead of using the issue tracker.
Credits
Thanks to the https://github.com/spatie/laravel-pjax package for providing a great starting point for testing Middlewares.
License
The MIT License (MIT). Please see License File for more information.