Code Monkey home page Code Monkey logo

laravel-http2serverpush's Introduction

Server Push Middleware for Laravel 5

Latest Version on Packagist Travis Software License Total Downloads

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.

Requirements

  • Laravel 5
  • PHP 7

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, tiff or svg.

Testing

$ composer test

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email [email protected] 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.

laravel-http2serverpush's People

Contributors

atayahmet avatar biscofil avatar ctf0 avatar f-liva avatar gayanhewa avatar grahamcampbell avatar jacobbennett avatar juukie avatar madmikeyb avatar matijakovacevic avatar moebrowne avatar multiwebinc avatar ninjaparade avatar nuranto avatar prestamodule avatar tankerkiller125 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.