defer-laravel
defer-laravel copied to clipboard
🚀 A Laravel package that focuses on minimizing payload size of HTML document and optimizing processing on the browser when rendering the web page.
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.
- Package: shinsenter/defer-laravel
- Version: 1.0.3
- Author: Mai Nhut Tan [email protected]
- Copyright: 2021 AppSeeds https://code.shin.company/
- License: MIT
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 [email protected] 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
From Vietnam 🇻🇳 with love.