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

Questo post è stato inviato il December 14, 2007 22:02 e Posted in , . Puoi seguire tutte le risposte tramite il Atom feed. You can leave a comments, Or a trackback from your own site.
Tags ,


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

Lascia una risposta

  1. Carlo Bertini il December 14, 2007 22:02:
    Ottime spiegazioni Davide, molto interessante la parte della cache dei css e js ... aspetto altre news :D:D:D

Lascia un commento