Rails 2: ActionController & ActionView (Asset e Caching)
Seguento l'articolo precedente ci addentreremo quest'oggi nelle novita di Rails 2.0. relative all'Action Controller e alle ActionView.
Asset Servers
Nei siti web moderni si fa sempre più largo l'uso di javascript, immagini, stylesheets e ovviamente html.
Tutti questi assets appesantiscono un sito.
La soluzione sarebbe semplice ovvero scaricare più files contemporaneamente dal server.
Ma c'e' un problema...
I browser moderni non accettano più di 2 connessioni allo stesso server.
Quindi il nostro caro Rails 2 ci viene in contro attraverso la creazione di alias al nostro server:
config.action_controller.asset_host=
"http://asset%d.tuodominio.com"
il "%d" verrà sostituito con un numero da 0 a 3.
il risultato sarà quindi:
http://asset0.tuodominio.com
http://asset1.tuodominio.com
http://asset2.tuodominio.com
http://asset3.tuodominio.com
Ora non ci resta che puntare i nuovi sottodomini, e creare l'alias, in apache è molto semplice:
ServerAlias *.tuodominio.com
In questo modo il browser più recente scaricherà non più 2 files alla volta ma bensì 8.
Asset Caching
Esiste un ulteriore tecnica per gestire i nostri assets oltre a quella sopra descritta. Il Caching.
In Rails 2 c'e' un nuovo attributo nei tag stylesheets e javascript, :cache, questo nuova opzione fa si che rails combini in modo intelligente i nostri files in un unico file. Ovviamente questa opzione sarà disponibile solo nell'enviroment di produzione.
Ecco un esempio
stylesheet_link_tag "miostyle1", "miostyle2", :cache => true
javascript_include_tag "miojs1", "miojs2", :cache => true
I files verranno uniti in un unico file chiamato all.css e all.js, volendo è possibile cambiare questo nome in quello che volete
stylesheet_link_tag "miostyle1", "miostyle2", :cache => "miostyle"
javascript_include_tag "miojs1", "miojs2", :cache => "miojs"
I file in produzione si chiameranno quindi: miojs.js, mystyle.css
nessuno ci vieta di unire in un unico files :defaults (prototype script.aculo.us etc...) e fare altrettanto con i nostri js dedicati all'applicativo, questo perché probabilmente prototype & c. difficilmente li aggiorneremo, cosa che non si può dire di quelli strettamente legati al nostro sito.
Infine non ci resta che ottimizzare il tutto applicando la compressione di javascript sul nostro server.
AddOutputFilterByType DEFLATE text/html text/xml text/plain
text/css application/x-javascript text/javascript;
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Dovete ricordarvi di abilitare il modulo deflate_module in apache
Trackbacks
Utilizza il link seguente per fare trackback dal tuo sito
http://blog.lipsiasoft.com/trackbacks?article_id=rails-2-actioncontroller-actionview-asset-e-caching&day=14&month=12&year=2007
Commenti
- Ottime spiegazioni Davide, molto interessante la parte della cache dei css e js ... aspetto altre news :D:D:D
Categories
- Altro (17)
- Comunicati Stampa (2)
- Fedora (1)
- Linux (17)
- Mac (45)
- Ruby (26)
- Ruby on Rails (44)
- Tutorials (20)
- Windows (13)
Archivi
- December 2008 (1)
- November 2008 (1)
- October 2008 (1)
- June 2008 (1)
- May 2008 (5)
- April 2008 (2)
- March 2008 (1)
- January 2008 (3)
- December 2007 (5)
- November 2007 (5)