2010-10-29 2 views
5

J'ai environ 10 blocs standard de HTML généré dynamiquement qui sont inclus sur un grand pourcentage de pages sur mon site (barres d'information).Vitesse: Vaut-il mieux utiliser une instruction Velocity Macro ou #include (...) pour un bloc DIV répété plusieurs fois sur des pages différentes?

Je peux utiliser des instructions #include ou les définir comme des macros, les deux fonctionneraient.

Quoi de mieux? Je suis nouveau sur Velocity et je migre un site de JSP.

Pourquoi utiliser l'un par rapport à l'autre? Pourquoi #include quand une macro sans-arg() fait la même chose? Sont-ils traités différemment d'une perspective de mise en cache/mémoire?

Répondre

6

S'il s'agit de blocs statiques (aucun code VTL), alors # les inclure en tant que ressources séparées sera certainement beaucoup plus performant. Même s'ils sont dynamiques (ont un code VTL), alors vous pouvez utiliser #parse au lieu de #include et obtenir encore de meilleures performances qu'une macro. Je ne serais même pas surpris d'apprendre que les blocs VTL #define sont plus rapides que les macros, bien que je ne l'ai pas testé. Les macros sont géniales et très utiles, mais les gens en abusent parfois ou en abusent. L'inconvénient de #parse et #include est que vous devez maintenir des fichiers plus séparés, mais c'est le prix d'une vitesse supérieure. #define est idéal pour les blocs de code qui n'ont pas besoin d'arguments et/ou qui doivent être passés en référence, mais vous ne devez utiliser les blocs # define'd directement dans le modèle qui les définit ou les choses peuvent devenir confuses.

Les macros sont géniales car elles prennent des paramètres et peuvent être définies globalement, et globalement c'est là où elles fonctionnent le mieux et ont le plus de sens. J'essaie généralement d'éviter les macros locales quand j'ai une alternative raisonnable. Et quand je réussis à éviter d'avoir des macros locales, je les prends en charge pour obtenir un petit boost de vitesse.

+0

Un grand merci pour l'excellente explication, cela aide vraiment à clarifier la différence dans mon esprit. –

Questions connexes