Laravel: comprimere l’HTML delle vostre pagine automaticamente

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!

0 0 voti
Valutazione dell'articolo
Iscriviti
Notificami
guest

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

3 Commenti
Vecchi
Più recenti Le più votate
Feedback in linea
Visualizza tutti i commenti
Giuseppe
Giuseppe
11 anni fa

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

Giuseppe
Giuseppe
Rispondi a  Riccardo Mel
11 anni fa

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à

Rimani Aggiornato
Nuove idee, zero Spam
Ti invieremo solo le ultime novità di articoli o nostri progetti.
Iscrivendoti accetti la nostra privacy poliicy. Una volta iscritto, ricordati di attivare l'iscrizione cliccando sul link ricevuto via mail.
3
0
Esprimete la vostra opinione commentando.x