Blog
Apr
24
Ancora ottimizzazioni: comprimere i file JavaScript e CSS
webmaster: 24/04/09 @ 13:56Questo weekend l'ho passato cercando di diminuire il peso dei file JavaScript e CSS.
La versione 2 di Minify sembra eccezionale. Per qualche motivo funziona perfettamente sul mio server locale, ma quando la uploado al server di produzione non funziona. Ho provato a fare troubleshooting per più di una settimana, ma alla fine ci ho rinunciato e ho deciso di apportare qualche modifica alla versione 1.
Già da tempo avevo cambiato l'algoritmo di compressione di Minify a un'implementazione in PHP del packer di Dean Edwards. I risultati sono stati ottimi fino ad ora, ma sapevo di poter fare di meglio. Ho quindi rimaneggato un po' il codice e ho aggiunto la funzione gzip trovata su php.net. I risultati sono stati eccezionali.
Prendiamo l'esempio di jQuery. Al naturale jQuery pesa 120,76KB, usando il packer di Dean Edwards arriviamo a 40,06KB, ma gzippando arriviamo addirittura a 19,77KB. Ho fatto un rapido calcolo che tra tutti i file JS e CSS, lo gzip ci risparmia circa 30KB a ogni download. Certo, il carico di lavoro è maggiore in termini di cicli CPU, ma la velocità di download è nettamente migliorata.
Per qualche motivo la compressione gzip all'interno delle pagine PHP sembra avere problemi. Non sono mai riuscito a riprodurre il problema, ma in vari mi hanno confermato il bug. L'unico codico che pare funzionare è il seguente inserito all'interno del file php.ini.
Per chi volesse approfondire questo argomento consiglio l'ottimo post sulla performance e il Yahoo User Interface Blog.
La versione 2 di Minify sembra eccezionale. Per qualche motivo funziona perfettamente sul mio server locale, ma quando la uploado al server di produzione non funziona. Ho provato a fare troubleshooting per più di una settimana, ma alla fine ci ho rinunciato e ho deciso di apportare qualche modifica alla versione 1.
Già da tempo avevo cambiato l'algoritmo di compressione di Minify a un'implementazione in PHP del packer di Dean Edwards. I risultati sono stati ottimi fino ad ora, ma sapevo di poter fare di meglio. Ho quindi rimaneggato un po' il codice e ho aggiunto la funzione gzip trovata su php.net. I risultati sono stati eccezionali.
Prendiamo l'esempio di jQuery. Al naturale jQuery pesa 120,76KB, usando il packer di Dean Edwards arriviamo a 40,06KB, ma gzippando arriviamo addirittura a 19,77KB. Ho fatto un rapido calcolo che tra tutti i file JS e CSS, lo gzip ci risparmia circa 30KB a ogni download. Certo, il carico di lavoro è maggiore in termini di cicli CPU, ma la velocità di download è nettamente migliorata.
Per qualche motivo la compressione gzip all'interno delle pagine PHP sembra avere problemi. Non sono mai riuscito a riprodurre il problema, ma in vari mi hanno confermato il bug. L'unico codico che pare funzionare è il seguente inserito all'interno del file php.ini.
output_buffering = On
output_handler = ob_gzhandler
zlib.output_compression = Off
output_handler = ob_gzhandler
zlib.output_compression = Off
Per chi volesse approfondire questo argomento consiglio l'ottimo post sulla performance e il Yahoo User Interface Blog.
Commenti: 0
Post correlati:
- [23/06/09] jQuery e ulteriore riduzione JavaScript e JPEG
- [02/06/09] Risultati delle ottimizzazioni