專利名稱:一種頁面數(shù)據(jù)提供方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種網(wǎng)頁數(shù)據(jù)提供方法,特別涉及一種基于數(shù)據(jù)緩存與靜態(tài)化的網(wǎng)頁數(shù)據(jù)提供方法,屬于互聯(lián)網(wǎng)技術(shù)領(lǐng)域。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,市場(chǎng)上已經(jīng)存在千千萬萬的網(wǎng)站供用戶訪問,通過上網(wǎng)獲取信息也成了人們所熟知的信息獲取方式。通常,用戶使用瀏覽器訪問網(wǎng)站,由瀏覽器生成顯示頁面,供用戶閱讀和操作。目前的所采取的流程為用戶輸入相應(yīng)操作,瀏覽器根據(jù)用戶的輸入,向應(yīng)用服務(wù)器發(fā)送請(qǐng)求,應(yīng)用服務(wù)器處理相應(yīng)請(qǐng)求并根據(jù)需要向數(shù)據(jù)庫服務(wù)器發(fā)送請(qǐng)求,數(shù)據(jù)庫服務(wù)器收到請(qǐng)求后做出相應(yīng)運(yùn)算并將數(shù)據(jù)返回給應(yīng)用服務(wù)器,應(yīng)用服 務(wù)器對(duì)返回?cái)?shù)據(jù)做出處理并將處理后的數(shù)據(jù)返回給瀏覽器,進(jìn)而生成頁面以向用戶顯示。在實(shí)際應(yīng)用中,應(yīng)用服務(wù)器的資源是有限的,數(shù)據(jù)庫每秒鐘所能接收的請(qǐng)求次數(shù)也是有限的,所以隨著用戶數(shù)量的迅速增加,采用上述流程方式會(huì)導(dǎo)致應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器所做的運(yùn)算和處理成倍增長,使得應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器的負(fù)荷過重,不僅嚴(yán)重降低系統(tǒng)性能,加大門戶網(wǎng)站的訪問壓力,也會(huì)降低頁面的訪問速度,降低用戶對(duì)網(wǎng)站的滿意度。因此,需要一種另外的訪問方式,以克服上述訪問方式的缺陷,降低門戶網(wǎng)站的訪問壓力,提高頁面訪問速度,從而提升用戶體驗(yàn)。
發(fā)明內(nèi)容
本發(fā)明的目的正是為了提供一種網(wǎng)頁數(shù)據(jù)提供方法,能夠降低應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器的負(fù)荷,避免門戶網(wǎng)站的訪問壓力,提高頁面的訪問速度,從而提升用戶對(duì)網(wǎng)站的
滿意度。FreeMarker作為一個(gè)模板引擎,已經(jīng)成為基于模板生成文本輸出的通用工具,F(xiàn)reeMarker由純Java編寫,被設(shè)計(jì)用來生成HTML Web頁面,特別是基于MVC模式的應(yīng)用程序。本發(fā)明利用Freemarker給出了一種網(wǎng)頁數(shù)據(jù)提供方法,該網(wǎng)頁數(shù)據(jù)提供方法包括以下步驟步驟I :定制頁面模板template ;步驟2 :接收用戶的輸入請(qǐng)求;步驟3 :根據(jù)用戶的輸入請(qǐng)求獲取需要在頁面模板上面顯示的數(shù)據(jù)文件data ;步驟4:將模板與數(shù)據(jù)文件data兩者結(jié)合在一起,用輸出流out生成一個(gè)靜態(tài)化頁面;步驟5 :將頁面提供給終端用戶,供用戶進(jìn)行數(shù)據(jù)訪問。
圖I為本發(fā)明的流程圖。
具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。具體地,本發(fā)明的網(wǎng)頁數(shù)據(jù)提供方法,如圖I所示,包括以下步驟步驟I :定制頁面模板template ;步驟2 :接收用戶的輸入請(qǐng)求;步驟3 :根據(jù)用戶的輸入請(qǐng)求獲取需要在頁面模板上面顯示的數(shù)據(jù)文件data ;步驟4 :將模板與數(shù)據(jù)文件data兩者結(jié)合在一起,用輸出流out生成一個(gè)靜態(tài)化頁面;步驟5 :將頁面提供給終端用戶,供用戶進(jìn)行數(shù)據(jù)訪問。 在具體操作過程中,可以利用Freemarker中的template, process (data, out)函數(shù)來實(shí)現(xiàn)。首先,提供一個(gè)頁面模板template,然后獲取到將要在模板上面顯示的數(shù)據(jù)文件data,將模板與數(shù)據(jù)文件data兩者結(jié)合在一起,用輸出流out生成一個(gè)靜態(tài)化頁面。其中,數(shù)據(jù)動(dòng)態(tài)從后臺(tái)如應(yīng)用服務(wù)器處獲取,獲取到數(shù)據(jù)之后,再將數(shù)據(jù)結(jié)合定制的模板以生成靜態(tài)化頁面,并最終提供給終端用戶訪問,這樣,訪問頁面就可以避免請(qǐng)求傳遞到數(shù)據(jù)庫服務(wù)器層面,從而節(jié)省了時(shí)間,提高了響應(yīng)速度。其中,頁面靜態(tài)化操作代碼示例STransactional(readOnly = true)
public void index (CmsSite site, String tpl, Map<String, Object〉
data)
throws IOException, TemplateException { long time = System. currentTimeMi 11 is ();
File f = new File (getIndexPath (site));
File parent = f. getParentFiIe (); if (!parent, exists ()) {
parent, mkdirs ();
}
Writer out = null; try {
out = new OutputStreamWriter(new FiIeOutputStream (f),
UTF8);
Template template = conf.getTemplate (tpl);template, process (data, out);
} finally {
if (out != null) { out. flush (); out. close ();
}
}
time = System. currentTimeMillis () - time; log. info ("create index page, in {} ms", time);
}
進(jìn)一步,利用緩存以提高響應(yīng)速度。在運(yùn)行時(shí),數(shù)據(jù)被存儲(chǔ)到緩存中,需要訪問數(shù)據(jù)時(shí),直接從緩存中獲得并返回?cái)?shù)據(jù),從而避免將請(qǐng)求傳到到數(shù)據(jù)庫服務(wù)器。對(duì)于緩存而言,按照緩存與應(yīng)用的耦合程度,可以將緩存劃分為local cache和remote cache。本發(fā)明所用至丨J的 local cache 是 ehcache, remote cache 是 memcacheecL其中,local cache最大的優(yōu)點(diǎn)是應(yīng)用和cache的時(shí)候是在同一個(gè)進(jìn)程內(nèi)部,請(qǐng)求緩存非??焖?,完全不需要網(wǎng)絡(luò)開銷,所以在單獨(dú)應(yīng)用不需要集群的情況下或者集群中的cachenode (緩存節(jié)點(diǎn))不需要相互通知的情況下使用local cache比較合適。但因?yàn)閷?duì)于local cache,多個(gè)應(yīng)用無法直接共享緩存,這樣在應(yīng)用集群的情況下,或者緩存組件提供了集群節(jié)點(diǎn)相互通知緩存更新的功能時(shí),如果采用廣播或者是環(huán)路更新,在緩存更新頻繁的情況下會(huì)導(dǎo)致網(wǎng)絡(luò)的io開銷非常大,嚴(yán)重的時(shí)候會(huì)影響應(yīng)用的正常運(yùn)行,并且,如果緩存中數(shù)據(jù)量較大的情況下,使用local cache意味著每個(gè)應(yīng)用都有一份這么大的緩存,會(huì)造成浪費(fèi)。所以這種情況下,選擇使用remote cache,具體選用Memcached,這在集群或者分布式情況下的是一種比較好的解決方案。具體的,在集群或者分布式的情況下各個(gè)應(yīng)用都可以共享memcached中的數(shù)據(jù),這些應(yīng)用都通過socket和基于tcp/ip協(xié)議上層的memcached協(xié)議直接連接到memcached,當(dāng)有一個(gè)應(yīng)用更新了 memcached中的值,所有的應(yīng)用都能拿到最新的值,這比local cache廣播或者環(huán)路更新cache節(jié)點(diǎn)的性能高,且由于數(shù)據(jù)只需要保存一份,所以也提高了內(nèi)存的使用率。
本發(fā)明公開的網(wǎng)頁數(shù)據(jù)提供方法,通過靜態(tài)化以及緩存,能夠降低應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器的負(fù)荷,避免門戶網(wǎng)站的訪問壓力,提高頁面的訪問速度,從而提升用戶對(duì)網(wǎng)站的滿意度,取得了有益效果。
權(quán)利要求
1.ー種網(wǎng)頁數(shù)據(jù)提供方法,該網(wǎng)頁數(shù)據(jù)提供方法包括以下步驟 步驟I :定制頁面模板template ;步驟2:接收用戶的輸入請(qǐng)求;步驟3 :根據(jù)用戶的輸入請(qǐng)求獲取需要在頁面模板上面顯示的數(shù)據(jù)文件data ;步驟4 :將模板與數(shù)據(jù)文件data兩者結(jié)合在一起,用輸出流out生成一個(gè)靜態(tài)化頁面;步驟5將頁面提供給終端用戶,供用戶進(jìn)行數(shù)據(jù)訪問。
2.如權(quán)利要求I所述的網(wǎng)頁數(shù)據(jù)提供方法,其特征在于,數(shù)據(jù)文件data從應(yīng)用服務(wù)器獲得,從而不需要訪問數(shù)據(jù)庫服務(wù)器。
3.如權(quán)利要求I所述的網(wǎng)頁數(shù)據(jù)提供方法,其特征在于,使用模板引擎Freemarker中的 template, process (data, out)方法生成浄態(tài)化頁面,其中,template, process (data,out)中的參數(shù)data即為上述數(shù)據(jù)文件data, template, process (data, out)中的參數(shù)out即為上述輸出流out。
4.如權(quán)利要求I或3所述的網(wǎng)頁數(shù)據(jù)提供方法,其特征在于,還包括以下步驟配置緩存并設(shè)置緩存的實(shí)體。
5.如權(quán)利要求4所述的網(wǎng)頁數(shù)據(jù)提供方法,其特征在于,數(shù)據(jù)文件data從緩存獲得。
6.如權(quán)利要求5所述的網(wǎng)頁數(shù)據(jù)提供方法,其特征在于,在不需要集群操作的情況下或者集群中的緩存節(jié)點(diǎn)不需要相互通知的情況下,緩存使用本地緩存local cache。
7.如權(quán)利要求6所述的網(wǎng)頁數(shù)據(jù)提供方法,其特征在于,緩存為進(jìn)程內(nèi)緩存ehcache。
8.如權(quán)利要求5所述的網(wǎng)頁數(shù)據(jù)提供方法,其特征在于,在多個(gè)應(yīng)用共享緩存的情況下或者緩存需要提供集群節(jié)點(diǎn)相互通知緩存更新的功能吋,緩存使用遠(yuǎn)程緩存remotecacheo
9.如權(quán)利要求8所述的網(wǎng)頁數(shù)據(jù)提供方法,其特征在干,緩存為分布式內(nèi)存對(duì)象緩存memcachedo
10.ー種網(wǎng)頁數(shù)據(jù)提供裝置,該網(wǎng)頁數(shù)據(jù)提供裝置包括以下模塊 定制模塊,用于定制頁面模板template ;輸入請(qǐng)求接收模塊,用于接收用戶的輸入請(qǐng)求;數(shù)據(jù)獲取模塊,用于根據(jù)用戶的輸入請(qǐng)求獲取需要在頁面模板上面顯示的數(shù)據(jù)文件 data ;頁面生成模塊,用于將模板與數(shù)據(jù)文件data兩者結(jié)合在一起,用輸出流out生成一個(gè)靜態(tài)化頁面;頁面提供模塊,用于將頁面提供給終端用戶,供用戶進(jìn)行數(shù)據(jù)訪問。
11.如權(quán)利要求10所述的網(wǎng)頁數(shù)據(jù)提供裝置,其特征在于,數(shù)據(jù)獲取模塊從應(yīng)用服務(wù)器獲得數(shù)據(jù)文件data,從而不需要訪問數(shù)據(jù)庫服務(wù)器。
12.如權(quán)利要求10所述的網(wǎng)頁數(shù)據(jù)提供裝置,其特征在于,頁面生成模塊使用模板引擎Freemarker 中的 template, process (data, out)方法生成浄態(tài)化頁面,其中,template,process (data, out)中的參數(shù) data 即為上述數(shù)據(jù)文件 data, template, process (data,out)中的參數(shù)out即為上述輸出流out。
13.如權(quán)利要求10或12所述的網(wǎng)頁數(shù)據(jù)提供方法,其特征在于,還包括緩存設(shè)置模塊,用于配置緩存并設(shè)置緩存的實(shí)體。
14.如權(quán)利要求13所述的網(wǎng)頁數(shù)據(jù)提供裝置,其特征在于,數(shù)據(jù)獲取模塊從緩存獲得數(shù)據(jù)文件data。
15.如權(quán)利要求14所述的網(wǎng)頁數(shù)據(jù)提供裝置,其特征在于,在不需要集群的情況下或者集群中的緩存節(jié)點(diǎn)不需要相互通知的情況下,緩存使用本地緩存local cache。
16.如權(quán)利要求15所述的網(wǎng)頁數(shù)據(jù)提供裝置,其特征在于,緩存為進(jìn)程內(nèi)緩存ehcacheo
17.如權(quán)利要求14所述的網(wǎng)頁數(shù)據(jù)提供裝置,其特征在于,在多個(gè)應(yīng)用共享緩存的情況下或者緩存需要提供集群節(jié)點(diǎn)相互通知緩存更新的功能吋,緩存使用遠(yuǎn)程緩存remotecacheo
18.如權(quán)利要求17所述的網(wǎng)頁數(shù)據(jù)提供裝置,其特征在干,緩存為分布式內(nèi)存對(duì)象緩存 memcachedo
全文摘要
本發(fā)明公開一種網(wǎng)頁數(shù)據(jù)提供方法,通過采用頁面靜態(tài)化以及緩存,能夠降低應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器的負(fù)荷,避免門戶網(wǎng)站的訪問壓力,提高頁面的訪問速度,從而提升用戶對(duì)網(wǎng)站的滿意度。
文檔編號(hào)G06F17/30GK102662993SQ20121006740
公開日2012年9月12日 申請(qǐng)日期2012年3月14日 優(yōu)先權(quán)日2012年3月14日
發(fā)明者張清鎖, 熊運(yùn)偉 申請(qǐng)人:北京神州數(shù)碼思特奇信息技術(shù)股份有限公司