Skip to content

shinsenter/defer-laravel

Repository files navigation

shinsenter/defer-laravel

🚀 A Laravel package that focuses on minimizing payload size of HTML document and optimizing processing on the browser when rendering the web page.

Latest Version on Packagist CodeFactor Total Downloads

Features

  • Simplify library options
  • Embed defer.js library
  • Normalize DOM elements
  • Fix missing meta tags
  • Fix missing media attributes
  • Preconnect to required origins
  • Preload key requests
  • Prefetch key requests
  • Browser-level image lazy-loading for the web
  • Lazy-load offscreen and hidden iframes
  • Lazy-load offscreen and hidden videos
  • Lazy-load offscreen and hidden images
  • Lazy-load CSS background images
  • Reduce the impact of JavaScript
  • Defer non-critical CSS requests
  • Defer third-party assets
  • Add fallback <noscript> tags for lazy-loaded objects
  • Add custom HTML while browser is rendering the page (splashscreen)
  • Attribute to ignore optimizing the element
  • Attribute to ignore lazyloading the element
  • Optimize AMP document
  • Minify HTML output

Installation

Require the shinsenter/defer-laravel package in your composer.json and update your dependencies:

composer require shinsenter/defer-laravel

Global usage

To allow DeferMiddleware for all of your routes, add the DeferMiddleware middleware at the top of the $middleware property of app/Http/Kernel.php class:

protected $middleware = [
  \AppSeeds\DeferLaravel\DeferMiddleware::class,
    // ...
];

Configuration

The defaults are set in config/defer-laravel.php. Publish the config to copy the file to your own config:

php artisan vendor:publish --tag="defer-laravel"

Options

View the defer-laravel.php config file for more details.

Lumen

On Lumen, just register the DeferServiceProvider manually in your bootstrap/app.php file:

$app->register(\AppSeeds\DeferLaravel\DeferServiceProvider::class);

Also copy the defer-laravel.php config file to config/defer-laravel.php and put it into action:

$app->configure('defer-laravel');

Global usage for Lumen

To allow DeferMiddleware for all your routes, add the DeferMiddleware middleware to the global middleware.

$app->middleware([
    // ...
    \AppSeeds\DeferLaravel\DeferMiddleware::class,
]);

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email shin@shin.company instead of using the issue tracker.

License

The MIT License (MIT). Please see License File for more information.

My works

Defer.js

https://github.com/shinsenter/defer.js/

🥇 A super small, super efficient library that helps you lazy load almost everything like images, video, audio, iframes as well as stylesheets, and JavaScript.

defer.php

https://github.com/shinsenter/defer.php/

🚀 A PHP library that aims to help you concentrate on web performance optimization.

Wordpress plugin

https://github.com/shinsenter/defer-wordpress/

⚡️ A native, blazing fast lazy loader. ✅ Legacy browsers support (IE9+). 💯 SEO friendly. 🧩 Lazy load almost anything.

Support my activities

Donate via Paypal Become a sponsor Become a stargazer Report an issue


From Vietnam 🇻🇳 with love.