在大型網(wǎng)站中,訪問者看到的頁面基本上是靜態(tài)頁面。為什么都要把頁面靜態(tài)化呢?把頁面靜態(tài)化,好處有很多。例如:訪問速度快,更有利于搜索引擎收錄 等。目前主流的靜態(tài)化主要有兩種:一種是通過程序?qū)討B(tài)頁面抓取并保存為靜態(tài)頁面,這樣的頁面的實際存在于服務(wù)器的硬盤中,另外一種是通過WEB服務(wù)器的 URL Rewrite的方式,他的原理是通過web服務(wù)器內(nèi)部模塊按一定規(guī)則將外部的URL請求轉(zhuǎn)化為內(nèi)部的文件地址,一句話來說就是把外部請求的靜態(tài)地址轉(zhuǎn)化 為實際的動態(tài)頁面地址,而靜態(tài)頁面實際是不存在的。這兩種方法都達(dá)到了實現(xiàn)URL靜態(tài)化的效果,但是也各有各自的特點。
將動態(tài)頁面轉(zhuǎn)化為實際存在的靜態(tài)頁面這種方法,由于靜態(tài)頁面的存在,少了動態(tài)解析過程,所以提高了頁面的訪問速度和穩(wěn)定性,使得優(yōu)化效果非常明顯。所以這種方法被廣泛采用。但是它的局限性同樣存在。對于大型網(wǎng)站而言,這種方法將帶來不可忽視的問題。
一、由于生成的文件數(shù)量較多,存儲需要考慮文件、文件夾的數(shù)量問題和磁盤空間容量的問題;
二、頁面維護(hù)的復(fù)雜性和大工作量,及帶來的頁面維護(hù)及時性問題,需要一整套站點更新制度。
而URL Rewrite方式特點同樣鮮明,由于是服務(wù)器內(nèi)部解析的地址,所以內(nèi)容是實時更新的,也不存在文件管理和硬件問題,維護(hù)比較方便。在服務(wù)器級URL Rewrite重寫技術(shù)并不影響頁面的執(zhí)行速度。但是URL Rewrite的門檻比較高,國內(nèi)虛擬主機(jī)大多不支持,而且虛擬主機(jī)是目錄級的URL Rewrite,通過遍歷目錄讀物URL轉(zhuǎn)發(fā)規(guī)則的方式將大大降低頁面的執(zhí)行速度。
除了抓取動態(tài)頁面和URL Rewrite的方法外,在這里我們再看一下另外的一種方法。此方法的核心思想就是:把頁面劃分成子數(shù)據(jù)塊,每個數(shù)據(jù)塊可能是一個inc文件,也可能多個 數(shù)據(jù)塊包含在一個inc文件中。具體的數(shù)據(jù)塊劃分根據(jù)頁面的業(yè)務(wù)結(jié)構(gòu)來處理。比如:網(wǎng)站頭尾等公共數(shù)據(jù)塊可以獨立成一個文件。這種方法需要考慮以下幾個方 面:
1、用什么方式生成頁面及里面的數(shù)據(jù)塊
2、頁面的更新機(jī)制;
3、大量的頁面文件的維護(hù)工作;
4、頁面數(shù)據(jù)塊的及時性。
這種方式的話,通??梢栽诤笈_增加一個服務(wù)程序,專門生成某個頻道或欄目的頁面。這樣雖然可行,按照頻道分的話,邏輯結(jié)構(gòu)也清晰。
這樣會帶來一些問題。例如:當(dāng)頻道修改后,相應(yīng)的服務(wù)程序都要重新翻一遍。如果頻道欄目很多,對應(yīng)的服務(wù)程序也會很多,導(dǎo)致程序的維護(hù)工作量大。前臺開發(fā)人員不僅要去做頁面,也要考慮后臺的服務(wù)程序結(jié)構(gòu),給他們增加了不必要的開發(fā)難度,降低了開發(fā)效率。
而在多服務(wù)模式下,會出現(xiàn)多臺服務(wù)去爭搶指令數(shù)據(jù)的情況。動作指令的狀態(tài)必須在多個服務(wù)之間同步。服務(wù)升級了,也要一個一個去更新,出現(xiàn)錯誤了也要一個一個去排查。。。。。。
那么有沒有一種方法能把生成頁面的功能獨立抽象成一個平臺,同時提供一個程序接口,前臺開發(fā)人員只需要按照這個接口,開發(fā)業(yè)務(wù)組件即可。現(xiàn)在前臺開發(fā)人員 只需要把寫好的業(yè)務(wù)組件,部署到指定的地方即可。剩下的事情交給這個平臺去做,這樣就簡化了系統(tǒng)發(fā)布,維護(hù)工作,減輕了前臺開發(fā)人員的工作量,提高了他們 的開發(fā)效率。
動作指令是指頁面更新的動作,當(dāng)頁面數(shù)據(jù)有變化時,會根據(jù)業(yè)務(wù)規(guī)則從某個地方發(fā)出一個動作。它的來源大致可以分為三種:前臺頁面觸發(fā),后臺內(nèi)容管理系統(tǒng)觸發(fā),后臺自動定時觸發(fā)。
靜態(tài)數(shù)據(jù)生成系統(tǒng)與業(yè)務(wù)組件的接口設(shè)計。通過反射的方式調(diào)用業(yè)務(wù)組件,接口的參數(shù)在指令結(jié)構(gòu)的基礎(chǔ)上擴(kuò)展即可。比如增加一些錯誤描述,數(shù)據(jù)庫鏈接對象等。
數(shù)據(jù)分發(fā)是一個獨立的數(shù)據(jù)傳輸系統(tǒng),它負(fù)責(zé)根據(jù)預(yù)先設(shè)定好的配置,把生成的頁面數(shù)據(jù)傳輸?shù)街付ǖ膚eb服務(wù)器上。
為了使系統(tǒng)在隨著網(wǎng)站訪問量的上升的同時做到水平擴(kuò)展,加快指令的處理速度。所以需要把系統(tǒng)部署到多臺服務(wù)器上,這樣以來各個子系統(tǒng)就要統(tǒng)一通信協(xié)調(diào)???以用MQ消息作為子系統(tǒng)之間的通信手段。子系統(tǒng)的部署模式變?yōu)镸aster-Slave的形式。Master主機(jī)上的系統(tǒng)負(fù)責(zé)讀指令,然后把指令發(fā)送到 MQ。各個Slave主機(jī)系統(tǒng)負(fù)責(zé)接收MQ消息指令,調(diào)用業(yè)務(wù)組件并更新某條指令的狀態(tài),這樣就把處理業(yè)務(wù)邏輯的壓力平均的分配到了各臺slave主機(jī)。
對于一個大型網(wǎng)站來說,生成的頁面數(shù)據(jù)會非常多,管理這些頁面文件又是一個問題。例如有的頁面被刪除了,而已經(jīng)生成的頁面數(shù)據(jù)還會存在各個web服 務(wù)器上。這時就需要通過后臺系統(tǒng)記錄這些頁面文件的部署位置,以便今后統(tǒng)一管理。同時業(yè)務(wù)組件的量也可能會比較多,特別是存在多版本的情況下,所以也需要 把業(yè)務(wù)組件的配置情況記錄到數(shù)據(jù)庫中,便于統(tǒng)一管理。
本文來源于成都網(wǎng)站建設(shè)公司與成都網(wǎng)站設(shè)計制作公司-創(chuàng)新互聯(lián)成都公司!
網(wǎng)站欄目:網(wǎng)站頁面靜態(tài)化方案
網(wǎng)頁地址:http://jinyejixie.com/news4/326404.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、做網(wǎng)站、軟件開發(fā)、標(biāo)簽優(yōu)化、品牌網(wǎng)站設(shè)計、外貿(mào)建站
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)