Velocity: лучше ли использовать оператор Velocity Macro или #include (...) для блока DIV, повторяющегося много раз на разных страницах? - PullRequest
5 голосов
/ 29 октября 2010

У меня около 10 стандартных блоков динамически генерируемого HTML, которые включаются в большой процент страниц моего сайта (информационные боковые панели).

Я могу использовать операторы #include или определить их как макросы, обабудет работать.

Что лучше?Я новичок в Velocity и переношу сайт из JSP.

Зачем использовать одно против другого?Почему #include, когда макрос no-arg () делает то же самое?Они обрабатываются по-другому с точки зрения кэширования / памяти?

1 Ответ

6 голосов
/ 29 октября 2010

Если они являются статическими блоками (без кода VTL в них), то включение их в качестве отдельных ресурсов, безусловно, будет работать намного лучше.Даже если они динамические (имеют код VTL), вы можете использовать #parse вместо #include и при этом получить лучшую производительность, чем макрос.Я даже не удивлюсь, узнав, что блоки #define VTL работают быстрее макросов, хотя я этого не проверял.Макросы хороши и очень полезны, но люди иногда злоупотребляют ими или злоупотребляют ими.

Недостатком #parse и #include является то, что вам нужно поддерживать больше отдельных файлов, но это цена за превосходную скорость.#define отлично подходит для блоков кода, которые не нуждаются в аргументах и ​​/ или должны передаваться в качестве ссылки, но вы должны использовать только блоки # define'd непосредственно в шаблоне, который их определяет, иначе все может запутаться.

Макросы хороши тем, что они принимают параметры и могут быть определены глобально, а глобально - там, где они работают лучше всего и имеют больше смысла.Я обычно стараюсь избегать локальных макросов, когда у меня есть разумная альтернатива.И когда я успешно избегаю использования локальных макросов, я отключаю их поддержку, чтобы получить небольшое ускорение.

...