2010-10-29 28 views
5

我有大約10個標準塊的動態生成的HTML,包含在我網站上的大部分頁面上(信息側欄)。速度:在不同的頁面上多次重複使用Velocity宏或#include(...)語句是否更好?

我可以使用#include語句或將它們定義爲宏,兩者都可以工作。

有什麼更好?我是Velocity的新手,並從JSP遷移站點。

爲什麼使用一個vs另一個?爲什麼有#include當一個沒有參數的宏()做同樣的事情?他們處理任何不同於緩存/內存的角度?

回答

6

如果它們是靜態塊(在它們中沒有VTL代碼),那麼#將它們作爲單獨的資源包含在內肯定會表現得更好。即使它們是動態的(包含VTL代碼),也可以使用#parse而不是#include,並且仍然可以獲得比宏更好的性能。我甚至不會感到驚訝的發現#define VTL塊比宏更快,儘管我還沒有測試過。宏很好,非常有用,但人們有時會濫用或濫用它們。

#parse和#include的缺點是您必須維護更多獨立的文件,但這是優異速度的代價。 #define非常適合不需要參數和/或需要作爲參考傳遞的代碼塊,但是應該只在模板中直接使用#define塊,以定義它們或者事情會變得混亂。

宏是偉大的,他們採取參數,可以在全球範圍內定義,並在全球範圍內,他們表現最好,最有意義。當我有一個合理的選擇時,我通常會盡量避免使用本地宏。當我成功地避免使用任何本地宏時,我將它們的支持變爲小速度提升。

+0

非常感謝您的出色解釋,它的確有助於澄清我心目中的差異。 – 2010-10-30 05:59:47

相關問題