Skip to content

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

License

Notifications You must be signed in to change notification settings

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.