Loading repository data…
Loading repository data…
vinkius-labs / repository
Package to optimize your site automatically which results in a 35%+ optimization. Laravel Page Speed delivers an end-to-end optimization pipeline for Blade-rendered pages and REST APIs with measurable gains in latency, bandwidth, and resiliency.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Using this in a Laravel project? Come talk to us — Join the Discord → Performance wins, edge cases, and what you're shipping. The maintainer is in there.
Laravel Page Speed delivers an end-to-end optimization pipeline for Blade-rendered pages and REST APIs with measurable gains in latency, bandwidth, and resiliency.
config/laravel-page-speed.php.data-ps-* guards.Choose the registration pattern that matches your Laravel install:
Laravel 10.x (app/Http/Kernel.php)
Append the middleware inside the web group so the order stays deterministic:
protected $middlewareGroups = [
'web' => [
// ... existing middleware
\VinkiusLabs\LaravelPageSpeed\Middleware\InlineCss::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\ElideAttributes::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\InsertDNSPrefetch::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\CollapseWhitespace::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\DeferJavascript::class,
],
];
Laravel 11.x, 12.x and 13.x (bootstrap/app.php)
Use the middleware configurator introduced in Laravel 11. Extend the existing ->withMiddleware closure:
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: __DIR__.'/../')
// ... existing configuration
->withMiddleware(function (Middleware $middleware) {
$middleware->appendToGroup('web', [
\VinkiusLabs\LaravelPageSpeed\Middleware\InlineCss::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\ElideAttributes::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\InsertDNSPrefetch::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\CollapseWhitespace::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\DeferJavascript::class,
]);
// keep other group definitions (api, broadcast, etc.) here
})
->create();
Attach only the middleware that fits your API architecture.
Laravel 10.x (app/Http/Kernel.php)
protected $middlewareGroups = [
'api' => [
// ... existing middleware
\VinkiusLabs\LaravelPageSpeed\Middleware\ApiSecurityHeaders::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\ApiResponseCache::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\ApiETag::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\ApiResponseCompression::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\ApiPerformanceHeaders::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\ApiCircuitBreaker::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\ApiHealthCheck::class,
],
];
Laravel 11.x, 12.x and 13.x (bootstrap/app.php)
Inside the same ->withMiddleware closure from the Web section, append the API stack:
$middleware->appendToGroup('api', [
\VinkiusLabs\LaravelPageSpeed\Middleware\ApiSecurityHeaders::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\ApiResponseCache::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\ApiETag::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\ApiResponseCompression::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\ApiPerformanceHeaders::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\ApiCircuitBreaker::class,
\VinkiusLabs\LaravelPageSpeed\Middleware\ApiHealthCheck::class,
]);
composer require vinkius-labs/laravel-page-speed
php artisan vendor:publish --provider="VinkiusLabs\\LaravelPageSpeed\\ServiceProvider"
Recommended baseline for cached APIs:
LARAVEL_PAGE_SPEED_ENABLE=true
API_CACHE_ENABLED=true
API_CACHE_DRIVER=redis
API_CACHE_TTL=300
API_CACHE_DYNAMIC_TAGS=true
| Metric | Before | After (cache hit) | Delta |
|---|---|---|---|
| Page Size (Blade) | 245 KB | 159 KB | -35% |
| First Paint | 1.8 s | 1.2 s | -33% |
| API Payload | 15.2 KB | 2.8 KB | -82% |
| Average API Latency | 450 ms | 2 ms | -99.6% |
| SQL Queries (100-item list) | 35 | 0 | -100% |
| Monthly Bandwidth (estimate) | 15 TB | 3 TB | -80% |
Reference scenario: 1M requests/day with a 65% cache hit rate.
X-Response-Time, X-Memory-Usage, X-Cache-Status, X-Circuit-Breaker-State ready for ingestion by Datadog, New Relic, or Prometheus scrapers.skip patterns avoid instrumenting Debugbar, Telescope, Horizon, or custom diagnostic routes.composer test (or docker compose exec app vendor/bin/phpunit) prior to submitting changes.