網站效能優化之_頁面靜態化
現在網際網路發展越來越迅速,對網站的效能要求越來越高,也就是如何應對高併發量。像12306需要應付上億人同時來搶票,淘寶雙十一……所以,如何提高網站的效能,是做網站都需要考慮的。
首先網站效能優化的方面有很多:
1,使用快取,最傳統的一級二級快取;
2,將服務和資料庫分開,使用不同的伺服器,分工更加明確,效率更加高;
3,分散式,提供多臺伺服器,利用反向代理伺服器nginx進行反向代理,將請求分散開來;
4,資料庫的讀寫分離,不同的資料庫,將讀操作和寫操作分開,並實時同步即可;
5,分散式快取,使用memcached或者redis等分散式快取伺服器,可以達到效果;
6,就是今天要淺談的頁面靜態化。當然還有其他很多方便需要處理,例如,資料庫的設計
今天簡單來談談頁面靜態化,來提高訪問效率。對於Java程式開發,Jsp頁面經歷了靜態頁面到動態頁面,使頁面豐富多彩,現在為了追求效率,追求效能,又反向動態頁面向靜態頁面的轉化。突然讓我想起了一句話“物極必反,否極泰來”,天底下,任何人任何物,都沒有絕對的對與錯,好與差,只有在特定的環境的,特定的情節,才有可比較之處。這也正是我對軟體IT技術,甚至更廣方面技術的看法,沒有好與差,沒有優與劣,只有看我們是否能夠將其用到恰當的地方,發揮它的優勢,避免他的不足!所以,不要談技術好與差,只有看我們人用的怎麼樣!
好了,廢話不說,看看頁面靜態化如何提高效率和其實現的邏輯吧。
頁面靜態化,其實就是將動態生成的jsp頁面,變成靜態的HTML頁面,讓使用者直接訪問。有一下幾方面好處:
1,首先就是訪問速度,不需要去訪問資料庫,或者快取來獲取哪些資料,瀏覽器直接載入渲染html頁即可。所以可以大大的提高訪問效率;
2,從網站優化來分析,搜尋引擎更喜歡靜態的網頁,靜態網頁與動態網頁相比,搜尋引擎更喜歡靜的,更便於抓取,搜尋引擎SEO排名更容易提高。
3,從安全形度講,靜態網頁不宜遭到黑客攻擊,如果黑客不知道你網站的後臺、網站採用程式、資料庫的地址,靜態網頁, 更不容易受到黑客的攻擊。
4,從網站穩定性來講,如果程式、資料庫出了問題,會直接影響網站的訪問,而靜態網頁就避免瞭如此情況,不會因為程式等,而損失網站資料,影響正常開啟,損失使用者體驗,影響網站信任度。
實現邏輯:一,首先需要我們將一些需要靜態化的頁面進行分類,哪些經常不變內容的頁面都需要靜態化,例如,在電商裡邊的商店,店鋪資訊頁;商品,貨物資訊頁等等。這些頁面一旦釋出了,後來改變的相對來說頻率比較低,所以生成靜態頁面相對來說,可以大大提高使用者的訪問速度(不需要訪問資料庫,來動態生成jsp頁面)。
二,將動態和靜態分離開,例如:頁面中使用者資訊,搜尋欄等。這些資訊需要從伺服器獲取,而那些靜態頁面一般放在雲伺服器上,例如上篇說到的阿里的OSS伺服器,這裡就設計到跨域問題,利用JSONP,來進行靜態頁面和動態頁面,不同域直接的整合。
三,靜態頁面的生成,方法很多,這裡簡單說一下,例如FreeMarker,首先利用FreeMarker寫好對應的靜態模版.ftl。然後通過介面來傳遞資料,生成靜態的HTML頁面,並上傳對應的雲伺服器上,然後使用者直接訪問對應的地址即可。
注意問題:一,每一個商店,每一個產品都會產生一個,甚至是一套靜態頁面,隨著網站的擴大,靜態html頁面將會不斷的增大,增多,所以管理這些靜態頁面就非常需要提前思考了。例如路徑的管理,控制元件的管理,及時更新的管理等等。 二,有些頁面並不一定非要來靜態化,但是為了避免地址暴露過多的資訊,受到不法分子的攻擊,URL偽靜態也可以幫助我們,使頁面看起來就像靜態頁面一樣,這裡提供一個URLRwrite,很簡單好用,原理只是一個Filter。
好,這篇部落格只是簡單總結了一下自己的思路,網站的優化都是一步步走向更好的,靜態化只是其中的一個環節,但是能夠做好,需要考慮的東西還很多,以後多多思考多多學習!