Laravel: comprimere l’HTML delle vostre pagine automaticamente

Laravel: comprimere l’HTML delle vostre pagine automaticamente
Freia

Nell’articolo/snippet dedicato a Laravel 4 di oggi vediamo come comprimere automaticamente il codice HTML delle vostre pagine in modo da renderlo minify.

Per farlo usiamo un semplice filtro che intercede prima del caricamento della pagina eliminando di fatto:

  • Commenti al codice
  • Spazi
// Codice da inserire in filters.php
App::after(function($request, $response)
{
 // HTML Minification
 if(App::Environment() != 'local')
 {
 if($response instanceof Illuminate\Http\Response)
 {
  $output = $response->getOriginalContent();
  // Clean comments
  $output = preg_replace('/<!--([^\[|(<!)].*)/', '', $output);
  $output = preg_replace('/(?<!\S)\/\/\s*[^\r\n]*/', '', $output);
  // Clean Whitespace
  $output = preg_replace('/\s{2,}/', '', $output);
  $output = preg_replace('/(\r?\n)/', '', $output);
  $response->setContent($output);
 }
}
});

Molto interessante la seguente funzionalità:

 if(App::Environment() != 'local')

Che di fatto esegue il codice ( e comprime l’html della pagina) solo se il sito è in produzione (LIVE).

Ovviamente non è un tipo di compressione molto elevato ma è comunque un ottimo compromesso per far “decollare” ancor meglio il vostro progetto dal punto di vista prettamente prestazionale. Conosci altri metodi? Segnalaceli nei commenti!

  1. Salve Riccardo,
    prima di tutto complimenti per il sito, contiene troppe cose interessanti 🙂
    Vado alla questione: vorrei applicare il filtro del post ma ho da pochissimo cominciato con laravel e non so inserirlo nel progetto.
    Io l’ho incollato in filter.php ma come lo chiamo dal routes.php?

    Nel dettaglio dovrei inserirlo in:
    Route::group(array(‘before’ => ‘auth’), function() {
    Route::resource(‘home’, ‘HomeController@dashboard’);


    Route::resource(‘askTotal’, ‘OrdersController@askTotal’);
    });

    Grazie
    Giuseppe

      1. Beh, vorrei che le pagine venissero “compresse” prima di essere mandate al browser.
        Pensavo che quel filtro dovesse essere richiamato da routes, non l’ho scritto perchè ne fossi sicuro o perchè volessi applicarlo per forza li.
        In pratica dove lo richiamo? potresti farmi un esempio esemplificatore?
        Grazie ancora per la disponibilità

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

rateit-votazione-a-stelle-con-jquery
Up Next:

RateIt: votazione a stelle con jQuery

RateIt: votazione a stelle con jQuery