1. 程式人生 > >Freemarker優缺點總結

Freemarker優缺點總結

1.什麼是 Freemarker

FreeMarker 是一個用 Java語言編寫的模板引擎,它基於模板來生成文字輸出。

使用方式類似JSP的EL表示式。它沒有被繫結到Servlet或HTML或任意Web相關的東西上。也可以用於非Web應用環境中。

它不僅可以用作表現層的實現技術,而且還可以用於生成 XML,JSP 或 Java 等。

這樣使得模板中專注於如何展示資料,模板之外可以專注於要展示什麼資料。

在這裡插入圖片描述

2.為什麼要使用網頁靜態化技術Freemarker?

  • FreeMarker的原理就是:模板+資料模型=輸出,這樣可以很好的將業務邏輯和表現層分離。JSP開發中,頁面會有大量業務邏輯,不利於維護和閱讀,使用FreeMarker可以避免這一問題。

  • 有利於分工合作。HTML人員可以關注頁面的設計無需面對頁面的業務邏輯,同時修改頁面程式碼也不需要程式設計師編重新譯程式碼。

  • 提高開發效率。相對於JSP,FreeMarker不需要每次修改後重新編譯,因此在開發除錯中可以有效節省時間。

  • 有利於提高訪問速度。對於不會頻繁發生變化的頁面,建議使用FreeMarker生成的靜態頁面。而不是每次都要動態生成的JSP頁面。

  • 可以提高併發量。例如單臺tomcat容器只支援幾百併發,我們如果將網頁以純靜態化的形式展現,就可以使用Nginx這樣的高效能的web伺服器來部署。Nginx可以支援幾萬的併發。

  • 靜態頁面對SEO更友好。

  • 不佔用JVM的PermGen space。因為不會被編譯成類,所以不會佔用web伺服器永生代的空間,避免OutOfMemoryError:PermGen space的問題。

  • 對於電商網站的商品詳細頁來說,至少幾百萬個商品,每個商品又有大量的資訊,這樣的情況同樣也適用於使用網頁靜態化來解決。

3.有什麼缺點呢?

  • 資料在更新後需要及時更新模板,否則可能會看到過期資料。
  • FreeMarker中的變數必須要賦值,不賦值就會丟擲異常。想避免錯誤就要應用if/elseif/else 指令進行判段,如果對每一個變數都判斷的話,那麼則反而增加了程式設計的麻煩。
  • FreeMarker的map限定key必須是string,其他資料型別無法操作。
  • FreeMarker不支援叢集應用。為了編成的方便性,把序列化的東西都放到了Session中,如Session,request等,在開發的過程中確實方便,但如果將應用放到叢集中,就會出現錯誤。

4.網頁靜態化技術和快取技術區別

網頁靜態化技術和快取技術的共同點都是為了減輕資料庫的訪問壓力。

但是具體的應用場景不同,快取比較適合小規模的資料,而網頁靜態化比較適合大規模且相對變化不太頻繁的資料。