shinsenter / defer-laravel by shinsenter

🚀 A Laravel package that focuses on minimizing payload size of HTML document and optimizing processing on the browser when rendering the web page.
3,297
18
4
Package Data
Maintainer Username: shinsenter
Maintainer Contact: shin@shin.company (Mai Nhut Tan)
Package Create Date: 2021-03-25
Package Last Update: 2021-11-25
Home Page: https://packagist.org/packages/shinsenter/defer-laravel
Language: PHP
License: MIT
Last Refreshed: 2024-04-18 15:21:08
Package Statistics
Total Downloads: 3,297
Monthly Downloads: 95
Daily Downloads: 6
Total Stars: 18
Total Watchers: 4
Total Forks: 2
Total Open Issues: 0

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

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