Search by

agenciafmd / laravel-turbo

agenciafmd

Turbo - Agência F&MD

Package info

github.com/agenciafmd/laravel-turbo

pkg:composer/agenciafmd/laravel-turbo

Statistics

Installs: 930

Dependents: 2

Suggesters: 0

Stars: 0

Open Issues: 0

dev-master 2026-09-29 20:24 UTC

This package is auto-updated.

Last update: 2026-09-29 20:26:13 UTC


README

Banner

Downloads Licença

Diminui o tempo de resposta e carregamento das páginas: minifica o HTML e grava uma versão estática de cada rota em public/page-cache, para ser servida direto pelo servidor web.

Baseado em:

Requisitos

  • Laravel ^12.0 | ^13.0
  • vinkius-labs/laravel-page-speed ^4.0
  • silber/page-cache ^1.1

Instalação

composer require agenciafmd/laravel-turbo:dev-master

O service provider é registrado automaticamente (package discovery) e cria o grupo de middlewares turbo.

Configuração

Desabilitando

No .env:

TURBO_ENABLED=false

Com o Turbo desabilitado, o grupo turbo continua existindo, mas vazio — as rotas não precisam ser alteradas.

Customizando as middlewares de otimização

Publique o arquivo de configuração (config/laravel-turbo.php):

php artisan vendor:publish --tag="laravel-turbo:config"

Modifique as middlewares conforme a necessidade (ver mais). O padrão é:

use Agenciafmd\Turbo\Middlewares\CollapseWhitespace;
use Agenciafmd\Turbo\Middlewares\RemoveComments;
use Silber\PageCache\Middleware\CacheResponse;
use VinkiusLabs\LaravelPageSpeed\Middleware\ElideAttributes;
use VinkiusLabs\LaravelPageSpeed\Middleware\InsertDNSPrefetch;
use VinkiusLabs\LaravelPageSpeed\Middleware\RemoveQuotes;

return [
    'enabled' => env('TURBO_ENABLED', true),
    'middlewares' => [
        CacheResponse::class,
        RemoveComments::class,
        RemoveQuotes::class,
        /* não mude a ordem */
        ElideAttributes::class,
        InsertDNSPrefetch::class,
        CollapseWhitespace::class,
    ],
];

RemoveComments e CollapseWhitespace são versões do pacote que removem os comentários HTML mas mantêm os comentários dentro de <style>.

Uso

Adicione a middleware turbo na rota. A resposta será minificada e um arquivo estático relativo a ela será criado em public/page-cache.

Se a página exibir dados do banco, limpe o cache assim que esses dados forem atualizados. Ver mais

Route::get('/', function () {
    return view('welcome');
})->middleware('turbo');

Outro exemplo:

Route::get('/', [FrontendController::class, 'index'])
    ->name('frontend.index')
    ->middleware('turbo');

Apenas requisições GET com status 200 são gravadas (HTML ou JSON).

Cache

Para limpar o cache estático, use o comando do silber/page-cache:

# tudo
php artisan page-cache:clear

# uma página ou diretório específico
php artisan page-cache:clear blog/meu-artigo
php artisan page-cache:clear blog --recursive

Servidor

Sem a reescrita de URL, o arquivo estático é gerado mas nunca é consumido. Configure o nginx / apache para procurar o arquivo em public/page-cache antes de chamar o index.php. Ver mais

A home é gravada como pc__index__pc.html. Exemplo para nginx:

location = / {
    try_files /page-cache/pc__index__pc.html /index.php?$query_string;
}

location / {
    try_files $uri $uri/ /page-cache/$uri.html /page-cache/$uri.json /index.php?$query_string;
}

Testes

Os testes ficam em tests/ e usam o Tests\TestCase da aplicação, então são executados de dentro do projeto que instala o pacote:

vendor/bin/pest packages/agenciafmd/laravel-turbo/tests

Licença

Este pacote é software livre e está disponível nos termos da licença MIT.