頁面靜態(tài)化概述
靜態(tài)頁面:
最早的時候前弯,網(wǎng)站內(nèi)容是通過在主機空間中放置大量的靜態(tài)網(wǎng)頁實現(xiàn)的。為了方便對這些分散在不同目錄的靜態(tài)網(wǎng)頁的管理骨饿,(一般是通過FTP)鳖擒,象frontpage/dreamweaver這樣軟件甚至直接提供了向主頁空間以FTP方式直接訪問文件的功能。以靜態(tài)網(wǎng)頁為主的網(wǎng)站最大的困難在于對網(wǎng)頁的管理芋忿,在這種框架里炸客,網(wǎng)頁框架和網(wǎng)頁中的內(nèi)容混雜在一起,很大程度地加大了內(nèi)容管理的難度戈钢。為了減輕這種管理的成本痹仙,發(fā)展出了一系列的技術(shù),甚至連css本身殉了,原本也是針對這種亂七八糟的網(wǎng)頁維護而設(shè)計的开仰,目的就是把網(wǎng)頁表達(dá)的框架和內(nèi)容本身抽象分離出來。
A.靜態(tài)網(wǎng)頁的內(nèi)容穩(wěn)定薪铜,頁面加載速度快众弓。
B.靜態(tài)網(wǎng)頁的沒有數(shù)據(jù)庫支持,在網(wǎng)站制作和維護方面的工作量較大隔箍。
C.靜態(tài)網(wǎng)頁的交互性差谓娃,有很大的局限性。
動態(tài)頁面:
通過執(zhí)行asp蜒滩、php滨达、jsp和.net等程序生成客戶端網(wǎng)頁代碼的網(wǎng)頁奶稠。通常可以通過網(wǎng)站后臺管理系統(tǒng)對網(wǎng)站的內(nèi)容進行更新管理捡遍。發(fā)布新聞锌订,發(fā)布公司產(chǎn)品,交流互動画株,博客瀑志,網(wǎng)上調(diào)查等,這都是動態(tài)網(wǎng)站的一些功能污秆。也是我們常見的劈猪。 常見的擴展名有:.asp、php良拼、jsp战得、cgi和aspx 等。 注意:動態(tài)頁面的“動態(tài)”是網(wǎng)站與客戶端用戶互動的意思庸推,而非網(wǎng)頁上有動畫的就是動態(tài)頁面常侦。
A.交互性好。
B.動態(tài)網(wǎng)頁的信息都需要從數(shù)據(jù)庫中讀取贬媒,每打開一個一面就需要去獲取一次數(shù)據(jù)庫聋亡,如果訪問人數(shù)很多,也就會對服務(wù)器增加很大的荷載际乘,從而影響這個網(wǎng)站的運行速度坡倔。
其實大家都知道,效率最高脖含、消耗最小的就是純靜態(tài)化的html頁面罪塔,所以我們盡可能使我們的網(wǎng)站上的頁面采用靜態(tài)頁面來實現(xiàn),這個最簡單的方法其實也是最有效的方法养葵。
為什么需要動態(tài)頁面靜態(tài)化:
1) 搜索引擎的優(yōu)化
盡管搜索機器人有點討厭征堪,各個網(wǎng)站不但不會再象從前一樣把它封起來,反而熱情無比地搞SEO关拒,所謂的面向搜索引擎的優(yōu)化佃蚜,其中就包括訪問地址的改寫,令動態(tài)網(wǎng)頁看上去是靜態(tài)網(wǎng)頁着绊,以便更多更大量地被搜索引擎收錄谐算,從而最大限度地提高自已的內(nèi)容被目標(biāo)接收的機會。但是畔柔,在完全以動態(tài)技術(shù)開發(fā)的網(wǎng)站氯夷,轉(zhuǎn)眼中要求變換成靜態(tài)網(wǎng)頁提供,同時靶擦,無論如何腮考,動態(tài)網(wǎng)頁的內(nèi)容管理功能也是必須保留的;就如同一輛飛駛的奔馳忽然要求180度轉(zhuǎn)彎玄捕,要付出的成本代價是非常大的踩蔚,是否真的值得,也確實讓人懷疑枚粘。
2) 提高程序性能
很多大型網(wǎng)站馅闽,進去的時候看它很復(fù)雜的頁面,但是加載也沒有耗費多長時間馍迄,除了其它必要原因以外福也,靜態(tài)化也是其中必需考慮的技術(shù)之一。
先于用戶獲取資源或數(shù)據(jù)庫數(shù)據(jù)進而通過靜態(tài)化處理攀圈,生成靜態(tài)頁面暴凑,所有人都訪問這一個靜態(tài)頁面,而靜態(tài)化處理的頁面本身的訪問速度要較動態(tài)頁面快很多倍赘来,因此程序性能會有大大的提升现喳。
靜態(tài)化在頁面上的體現(xiàn)為:訪問速度加快,用戶體驗性明顯提升犬辰;在后臺體現(xiàn)為:訪問脫離數(shù)據(jù)庫嗦篱,減輕了數(shù)據(jù)庫訪問壓力。
FreeMarker實現(xiàn)頁面靜態(tài)化
FreeMarker是什么:
FreeMarker是一個基于Java的開發(fā)包和類庫的一種將模板和數(shù)據(jù)進行整合并輸出文本的通用工具幌缝,F(xiàn)reeMarker實現(xiàn)頁面靜態(tài)化的原理是:將頁面中所需要的樣式寫入到FreeMarker模板文件中灸促,然后將頁面所需要的數(shù)據(jù)進行動態(tài)綁定并放入到Map中,然后通過FreeMarker的模板解析類process()方法完成靜態(tài)頁面的生成涵卵。
模板引擎:一種基于模板的腿宰、用來生成輸出文本的通用工具;基于Java的開發(fā)包和類庫缘厢。
FreeMarker能做什么:
MVC框架中的View層組件吃度、html頁面靜態(tài)化、代碼生成工具和CMS模板引擎贴硫。
為什么要用FreeMarker:
程序邏輯(Java 程序)和頁面設(shè)計(FreeMarker模板)分離椿每;
分層清晰,利于分工合作英遭;
主流Web框架良好的集成(struts2间护,springmvc);
簡單易學(xué)挖诸、功能強大汁尺;
免費開源。
Velocity實現(xiàn)頁面靜態(tài)化
Velocity是什么:
Velocity是一個基于Java的模板引擎(template engine)多律。它允許任何人僅僅使用簡單的模板語言(template language)來引用由Java代碼定義的對象痴突。
Velocity的應(yīng)用:
當(dāng)Velocity應(yīng)用于Web開發(fā)時搂蜓,界面設(shè)計人員可以和Java程序開發(fā)人員同步開發(fā)一個遵循MVC架構(gòu)的web站點,也就是說辽装,頁面設(shè)計人員可以只關(guān)注頁面的顯示效果帮碰,而由Java程序開發(fā)人員關(guān)注業(yè)務(wù)邏輯編碼。Velocity將Java代碼從web頁面中分離出來拾积,這樣為web站點的長期維護提供了便利殉挽,同時也為我們在JSP和PHP之外又提供了一種可選的方案。