Chameleon on plone 4.1
compilare i template zpt ha i suoi vantaggi
Plone fa un uso massivo dei page template, esiste infatti un page template non solo per ogni pagina ma anche per ogni widget. Questo significa che una form di edit o una view di una Page, vengono gestiti almeno quattro page template: uno per la pagina vera e propria, una per il title, una per la description ed una per il testo della pagina. A questi si aggiungo tutti i page template utilizzati per le varie portlet e le viewlet presenti. Questa semplice riflessione fa capire immediatamente quanto sia importante gestire i page template al meglio. Chameleon e' un prodotto che si occupa proprio di gestire al meglio questo particolare aspetto. L'idea di fondo e' molto semplice: anziche' interpretare un page template ogni volta che questo viene richiesto da un generico utente, questo viene compilato in byte-code. In questo caso l'atavica sfida compilatore vs interprete e' vinta' in maniera sufficientemente marcata dal compilatore, che ovviamente paga un tempo superiore per la compilazione dei page template. Questo dazio viene pagato solamente una volta (ovviamente) alla prima richiesta di una specifica pagina. Potremmo aprire un dibattito su quanto si possa guadagnare se la compilazione dei page template fosse realizzata in fase di avvio dell'application server (quindi di Zope), ma per questo sarebbe piu' produttivo farlo con gli autori di Chameleon.
Il test per valutare la bonta' di qesta soluzione e' molto semplice:
- si prende un Plone Vanilla 4.1.2
- si aggiunge al buildout l'egg five.pt, e si fa girare il buildout
- si avvia il server e si instanzia un sito plone vanilla
- opzionale: si creano un po' di directory e pagine pubbliche a piacere
Fatto questo l'ambiente di test e' pronto.
Se possedete due computer in rete, potete mettere il server su uno dei due e fare le chiamate dall'altro, in modo da non dover condividere tra server e client il disco, periferica di solito capace di variare sensibilmente i benchmark.
Se ne possedete uno solo, non vi consiglio l'uso di macchine virtuali anche se utilizzate xen, sempre per questioni di dischi.
Con il server appena avviato, il comando da utilizzare
$ time wget -r -np localhost:8080/Plone
Il comando time permette di sapere quanto tempo e' stato utilizzato da un processo, dettagliandolo di tre inforazioni:
- tempo reale: tempo in secondi necessari al processo per essere eseguito, quindi dalla pressione del tasto "Invio", "Return" o che dir si voglia, fino alla ripresentazione del prompt;
- tempo user: tempo speso dal processo utente, quindi il tempo dedidaco al programma avviato inteso come tempo realmente utilizzato e non come latenza tra l'inizio e la fine (tempo reale)
- tempo sys: tempo speso per le chiamate al sistema operativo e quindi speso dalle routine del kernel
Wget invece e' un crawler molto semplice e le opzioni indicate servono solo per fare in modo che tutto il sito Plone (pubblico) sia scaricato nella corrente cartella del file system, compresi css e immagini.
I risultati che ho ottenuto sono i seguenti:
Plone Vanilla (invocazione gen.) |
Plone Five.pt (prima invocazione) |
Plone Five.pt (invocazioni succ.) |
|
Real | 2.075 | 8.292 |
1.699 |
User | 0.013 | 0.007 | 0.010 |
Sys | 0.017 | 0.027 | 0.023 |
I tempi sono espressi in secondi.
Come potete vedere dalla tabella, il guadagno netto e' di un 15%, senza aver fatto nulla di particolare. Naturalmente si nota quanto la compilazione dei page template pesi nel caso in cui ci si trovi a doverli richiedere per la prima volta. Tale tempo non deve spaventare in quanto e' facilmente eliminabile utilizzando un generico crawler appena riavviato l'application server.
Azioni sul documento
- Spedisci questo
- Stampa questo