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