2010-10-29 25 views
5

Ho circa 10 blocchi standard di codice HTML generato dinamicamente che vengono inclusi in una grande percentuale di pagine sul mio sito (barre laterali informative).Velocity: è meglio utilizzare un'istruzione Velocity Macro o #include (...) per un blocco DIV ripetuto più volte su pagine diverse?

Posso usare le istruzioni #include o definirle come macro, entrambe funzionerebbero.

Cosa c'è di meglio? Sono nuovo di Velocity e la migrazione di un sito da JSP.

Perché utilizzare uno contro l'altro? Perché # include quando una macro no-arg() fa lo stesso? Sono gestiti in modo diverso da una prospettiva di memorizzazione nella cache/memoria?

risposta

6

Se sono blocchi statici (nessun codice VTL in essi), quindi # includerli come risorse separate funzionerà sicuramente molto meglio. Anche se sono dinamici (hanno codice VTL), allora puoi usare #parse invece di #include e ottenere comunque prestazioni migliori di una macro. Non sarei nemmeno sorpreso di apprendere che i blocchi VTL #define sono più veloci dei macro, sebbene non l'abbia provato. I macro sono grandi e molto utili, ma a volte le persone li abusano o li abusano.

Lo svantaggio di #parse e #include è che è necessario conservare più file separati, ma questo è il prezzo per una velocità superiore. #define è ottimo per i blocchi di codice che non hanno bisogno di argomenti e/o devono essere passati in giro come riferimento, ma dovresti usare solo # define'd blocchi direttamente nel modello che li definisce o le cose possono diventare confuse.

I macro sono fantastici in quanto accettano parametri e possono essere definiti globalmente, e globalmente è il posto in cui si comportano meglio e hanno più senso. Generalmente cerco di evitare le macro locali quando ho un'alternativa ragionevole. E quando riesco a evitare di avere macro locali, spengo il supporto per ottenere un piccolo aumento di velocità.

+0

Mille grazie per l'eccellente spiegazione, aiuta davvero a chiarire la differenza nella mia mente. –

Problemi correlati