1.什么是靜態(tài)網(wǎng)頁資源?
放在服務(wù)器上看到的是什么,顯示的就是什么,一旦存于服務(wù)器上們就不會有任何改變
靜態(tài)內(nèi)容特點(diǎn):
優(yōu)點(diǎn):
1.圖片,附件,視頻,前端頁面語言,html,.js,.css,等
2.客戶端解析(效率更高),而不是服務(wù)端解析。? #性能優(yōu)化關(guān)鍵
? ? ? ? ? ? ? ? 飯店是出示給你做好,放好調(diào)料,給你端過來,讓你吃,叫服務(wù)端解析
? ? ? ? ? ? ? ? 自主,火鍋是你自己弄,叫客戶端解析**
3.地址欄里沒有特殊符號,比如&&、?符等等
4.網(wǎng)頁發(fā)布一旦完成,就不會改變,(除非人工修改)這樣客戶更容易找到
5.靜態(tài)網(wǎng)頁存儲地點(diǎn):存儲與(NFS)這樣的服務(wù)里(共享存儲)
6.內(nèi)容來源(核心:用戶上傳:圖片視頻等;程序員開發(fā)的代碼(.html,.js,.css))
7)網(wǎng)頁程序在用戶瀏覽器端解析,如IE瀏覽器,程序解析效率很高,由于服務(wù)端不進(jìn)行解析,并且不需要讀取數(shù)據(jù)庫,因此服務(wù)器端可以接受更多的并發(fā)訪問。當(dāng)客戶端向服務(wù)器請求數(shù)據(jù)時(shí),服務(wù)器直接把數(shù)據(jù)從磁盤文件系統(tǒng)上返回(不做任何解析) ,待客戶端拿到數(shù)據(jù)后,在瀏覽器端解析展現(xiàn)出來(優(yōu)點(diǎn)) 。
缺點(diǎn):
1.后端沒有數(shù)據(jù)庫。在網(wǎng)站制作和維護(hù)方面工作量較大,因此當(dāng)網(wǎng)站信息量很大時(shí),完全依靠靜態(tài)資源網(wǎng)頁制作的方式比較困難(缺點(diǎn))
2)網(wǎng)頁的交互性較差,在程序功能實(shí)現(xiàn)方面有較大的限制(缺點(diǎn))
靜態(tài)網(wǎng)頁資源的對應(yīng)程序及資源文件的常見擴(kuò)展名為:
純文本類程序或文件,如htm、html, xml, shtml、 js. css等。
圖片類文件或數(shù)據(jù)文檔,如jpg,gif, png, bmp,txt, doc, ppt等。
視頻類流媒體文件,如mp4,swf, avi, wmv.flv等。
高并發(fā)的情況下必須用靜態(tài)網(wǎng)頁 (客戶端自己解析)
在高并發(fā)、高訪間量的場景下做架構(gòu)優(yōu)化,涉及的關(guān)鍵環(huán)節(jié)就是把動態(tài)網(wǎng)頁轉(zhuǎn)成靜態(tài)網(wǎng)頁,而不直接請求數(shù)據(jù)庫和動態(tài)服務(wù)器,并且可以把靜態(tài)內(nèi)容推送到前端緩存(或CDN)中提供服務(wù),這樣就可以提升用戶體驗(yàn),節(jié)約服務(wù)器和維護(hù)成本。
動態(tài)網(wǎng)頁六大特點(diǎn):
0)動態(tài)資源網(wǎng)站鏈接中含有特殊符號,比如&&、?、等等
1)網(wǎng)頁擴(kuò)展名后綴常見為: .asp, .aspx,.php,.jsp,.do,.cgi等。
2)網(wǎng)頁一般以數(shù)據(jù)庫技術(shù)為基礎(chǔ),大大降低了網(wǎng)站維護(hù)的工作量。
3)采用動態(tài)網(wǎng)頁技術(shù)的網(wǎng)站可以實(shí)現(xiàn)更多的功能,如用戶注冊、用戶登錄、在線調(diào)查、投票、用戶管理、訂單管理、發(fā)博文等等。
4)動態(tài)網(wǎng)頁并不是獨(dú)立存在于服務(wù)器上的網(wǎng)頁文件,當(dāng)用戶請求服務(wù)器上的動態(tài)程序時(shí),服務(wù)器解析這些程序并可能讀取數(shù)據(jù)庫返回一個(gè)完整的網(wǎng)頁內(nèi)容。
5)動態(tài)網(wǎng)頁中的“?"在搜索引擎的收錄方面存在一定的問題,搜索引擎一般不會從一個(gè)網(wǎng)站的數(shù)據(jù)庫中訪問全部網(wǎng)頁,或者出于技術(shù)等方面的考慮,搜索蜘蛛一般不會去抓取網(wǎng)址中“?”后面的內(nèi)容,因此在企業(yè)通過搜索引擎進(jìn)行推廣時(shí),需要針對采用動態(tài)網(wǎng)頁的網(wǎng)站做一定的技術(shù)處理(偽靜態(tài)技術(shù)) ,以便適應(yīng)搜索引擎的抓取要求。
6)程序在服務(wù)器端解析,這相當(dāng)于顧客點(diǎn)餐,飯店廚師做飯做菜,耗時(shí)長,效率低。由于程序在服務(wù)端解析,因此,會消耗大量的CPU和內(nèi)存、1/O等資源,并且多數(shù)還要讀取數(shù)據(jù)庫等服務(wù),因此,其訪問效率遠(yuǎn)不如靜態(tài)網(wǎng)頁,在服務(wù)端解析動態(tài)程序的服務(wù)常見的右pHp引整 lava容器(tamcat resin. iboss wehlooic)
總結(jié):
靜態(tài)效率高
動態(tài)消耗資源大
靜態(tài)屬于客戶端解析
動態(tài)屬于服務(wù)端解析
性能方面:靜態(tài)好
功能方面:動態(tài)好
維護(hù)方面:動態(tài)好
高并發(fā)時(shí),三者都得滿足
什么是偽靜態(tài)網(wǎng)頁
偽靜態(tài)就是通過某些技術(shù)(如rewrite)把動態(tài)網(wǎng)頁的URL地址偽裝成靜態(tài)網(wǎng)頁URL地址,但實(shí)質(zhì)上用戶訪問的還是動態(tài)網(wǎng)頁,只不過給用戶看起來URL地址是符合靜態(tài)網(wǎng)頁地址特征的,因此,用戶及某些搜索引擎會誤認(rèn)為是靜態(tài)網(wǎng)頁。
為什么要把動態(tài)頁面做成偽靜態(tài)頁面?
動態(tài)網(wǎng)頁鏈接中的“?、&&等特殊符號"在搜索引擎的收錄方面存在一定的問題,搜索引擎一般不會從一個(gè)網(wǎng)站的數(shù)據(jù)庫中訪問全部網(wǎng)頁,或者出于技術(shù)等方面的考慮,搜索蜘蛛一般不會去抓取網(wǎng)址中“?”后面的內(nèi)容,因此在企業(yè)通過搜索引擎進(jìn)行推廣時(shí),需要針對采用動態(tài)網(wǎng)頁的網(wǎng)站做一定的技術(shù)處理(偽靜態(tài)技術(shù)) ,以便適應(yīng)搜索引擎的抓取要求。
偽靜態(tài)網(wǎng)頁特點(diǎn)
從網(wǎng)站的URL地址看,偽靜態(tài)表面上看起來是靜態(tài)內(nèi)容(如地址結(jié)尾帶html,連接中無特殊符號) ,這是通過rewrite規(guī)則來實(shí)現(xiàn)的URL地址重寫。改寫后的URL地址規(guī)范、美觀,有利于搜索引擎抓取,以及提升用戶訪問體驗(yàn)。如: http://oldboy.blog.51cto.com/2561410/803606和 http://www.discuz.net/forum-3967-1.html這樣的兩個(gè)地址都是偽靜態(tài)的。因?yàn)閭戊o態(tài)網(wǎng)頁還是動態(tài)網(wǎng)頁,從性能上考慮,偽靜態(tài)功能不但沒有提升網(wǎng)站性能,反而會降低網(wǎng)站的性能。這一點(diǎn)讀者要理解。那么,有些讀者可能就會有疑問了,為什么動態(tài)網(wǎng)頁需要偽裝成靜態(tài)呢?為什么不能直接轉(zhuǎn)成靜態(tài)網(wǎng)頁呢?
偽靜態(tài)網(wǎng)頁作用
由于搜索引擎無法正確讀取帶參數(shù)的動態(tài)網(wǎng)頁內(nèi)容,造成網(wǎng)頁中很多具有豐富信息的頁面無法被搜索引擎收錄,因此才有了偽靜態(tài)技術(shù),它的作用是把動態(tài)網(wǎng)頁URL改寫成靜態(tài)網(wǎng)頁的URL,雖然同樣是消除了動態(tài)網(wǎng)頁中的參數(shù),但是并不需要生成任何網(wǎng)頁,僅僅是改變了網(wǎng)頁地址路徑,這樣做的主要目的有兩個(gè),一是讓搜索引擎收錄網(wǎng)站內(nèi)容,實(shí)現(xiàn)讓更多的用戶訪問企業(yè)網(wǎng)站內(nèi)容,二是提升用戶訪問體驗(yàn),動態(tài)地址帶特殊符號等的URL看起來也不如看著靜態(tài)網(wǎng)頁地址舒服。
偽靜態(tài)網(wǎng)頁的缺點(diǎn)
動態(tài)網(wǎng)頁偽裝靜態(tài)網(wǎng)頁,雖然可以讓搜索引擎收錄,并且可提升用戶訪問體驗(yàn),但偽靜態(tài)網(wǎng)頁并不能提升網(wǎng)站的訪問效率性能,從理論上說還會降低網(wǎng)站的性能,沒有動態(tài)轉(zhuǎn)靜態(tài)網(wǎng)頁效率高,但是對于一些并發(fā)不是超大的情況來說,或者是硬件資源充足的情況來說,偽靜態(tài)還是一個(gè)不錯(cuò)的實(shí)用功能,因?yàn)?要把動態(tài)網(wǎng)頁真正地轉(zhuǎn)成靜態(tài)網(wǎng)頁,不是一朝一夕的事情,需要技術(shù)團(tuán)隊(duì)通力配合才能行。
現(xiàn)在很多大型的網(wǎng)站都采用了動態(tài)網(wǎng)頁生成靜態(tài)網(wǎng)頁的技術(shù),消除動態(tài)網(wǎng)頁中的參數(shù),使搜索引擎收錄更多的內(nèi)容,達(dá)到優(yōu)化網(wǎng)站的效果。當(dāng)網(wǎng)站遇到訪問瓶頸時(shí),如果有技術(shù)力量將動態(tài)網(wǎng)頁轉(zhuǎn)化成靜態(tài)網(wǎng)頁,那就再好不過了,但是,有些更新頻率很快的業(yè)務(wù)并不適合這么做,或者將動態(tài)轉(zhuǎn)為靜態(tài)有很大難度,這時(shí)就可以考慮設(shè)置偽靜態(tài)。相關(guān)架構(gòu)內(nèi)容可以參加老男孩老師高級架構(gòu)師課程內(nèi)容。
偽靜態(tài)網(wǎng)頁小結(jié)
利用rewrite技術(shù)將動態(tài)網(wǎng)頁偽裝成靜態(tài)網(wǎng)頁(URL地址改寫).
便于搜索引擎搜錄提升用戶訪問量以及用戶體驗(yàn)
訪問性能沒有提升,并且轉(zhuǎn)換偽靜態(tài)會消耗資源,因此性能反而會下降.
如果為了性能,就盡可能將動態(tài)網(wǎng)頁轉(zhuǎn)換成真正的靜態(tài)頁面。
并發(fā)量不是很大或者動態(tài)更新過于頻繁的時(shí)候,用rewrite實(shí)現(xiàn)偽靜態(tài)也是不錯(cuò)的
偽靜態(tài)網(wǎng)頁的實(shí)現(xiàn)過程,一般是由運(yùn)營產(chǎn)品提出需求,開發(fā)和運(yùn)維共同實(shí)現(xiàn)的。
門戶新聞業(yè)務(wù)
新聞網(wǎng)站的特點(diǎn)是一旦發(fā)布完成,幾乎不會再改動網(wǎng)頁內(nèi)容。因此,對于新聞業(yè)務(wù)內(nèi)容的靜態(tài)化相對比較簡單。
第一步:程序要支持發(fā)布動態(tài)內(nèi)容轉(zhuǎn)成靜態(tài)功能。
第二步:運(yùn)營編輯人員發(fā)布新聞網(wǎng)頁(內(nèi)容進(jìn)數(shù)據(jù)庫,圖片、視頻進(jìn)入存儲)后,后臺程序立刻將動態(tài)網(wǎng)頁生成靜態(tài)文件(生成html文件放到存儲上) 。
第三步:運(yùn)維人員通過發(fā)布或事件觸發(fā)把運(yùn)營編輯生成的靜態(tài)網(wǎng)頁發(fā)布到事先搭建好的公司緩存集群服務(wù)器上,或者把靜態(tài)內(nèi)容同步到購買的全國所有CDN服務(wù)器節(jié)點(diǎn)上,然后,再提供給用戶提供訪問瀏覽。
利用CDN加速:
2.視頻網(wǎng)站業(yè)務(wù)
視頻網(wǎng)站和新聞網(wǎng)站類似,特點(diǎn)都是一旦發(fā)布完成,幾乎不會再改動網(wǎng)頁內(nèi)容。因此,實(shí)現(xiàn)視頻業(yè)務(wù)網(wǎng)站高效訪問也很簡單。
以優(yōu)酷視頻網(wǎng)為例,用戶在上傳視頻時(shí),需要經(jīng)歷轉(zhuǎn)碼→審核的過程(大概1個(gè)小時(shí)),然后一些熱點(diǎn)視頻也可能會被提前推送同步到CDN的核心節(jié)點(diǎn)或全國所有CDN服務(wù)器節(jié)點(diǎn),用戶訪問時(shí)才會更快。
1)凡是發(fā)布后不需要再改的網(wǎng)站業(yè)務(wù),都可以直接靜態(tài)化,(一臺頂十臺)
? ? ? 或者需要改也行,但前提是公司內(nèi)部人員更改。(重新靜態(tài)化的過程)
2)用戶上傳修改,然后還實(shí)時(shí)要求高。靜態(tài)化最難,如::
Blog/BBS/SNS/微博社區(qū)業(yè)務(wù)/電商(如淘寶、京東)
這幾類業(yè)務(wù)的動態(tài)轉(zhuǎn)靜態(tài)是比較困難的,因?yàn)?用戶發(fā)布完成內(nèi)容,可能會隨時(shí)更新并查看,這種情況一般會通過異步方式,例如消息中間件技術(shù)加上NoSQL集群技術(shù)實(shí)現(xiàn)實(shí)現(xiàn)轉(zhuǎn)換,當(dāng)然也會改進(jìn)產(chǎn)品細(xì)節(jié),例如:在訪問的環(huán)節(jié)設(shè)置延時(shí)、異步加載等手段,
較為詳細(xì)的說明見如博客“淺談千萬級PVIP規(guī)模高性能高并發(fā)網(wǎng)站(http://oldboy.blog.51cto.com/2561410/736710和http://edu.5 1cto.com/course/course id-3093.html)
上邊這個(gè)博客看一下^
生產(chǎn)Web架構(gòu)優(yōu)化實(shí)戰(zhàn)方案
由于靜態(tài)網(wǎng)頁程序在客戶端解析,大大降低了服務(wù)器端的訪問壓力,因此解析效率更高,在實(shí)際高并發(fā)網(wǎng)站架構(gòu)中,可以考慮把用戶請求的數(shù)據(jù)解析后存成靜態(tài)文件放于磁盤中或放于內(nèi)存中,來降低動態(tài)服務(wù)器的壓力,節(jié)約企業(yè)成本,提升用戶體驗(yàn)。
有關(guān)高并發(fā)網(wǎng)站架構(gòu)從動態(tài)轉(zhuǎn)靜態(tài)的內(nèi)容,可以參考老男孩老師的文章“淺談千萬級PV/IP規(guī)模高性能高并發(fā)網(wǎng)站架構(gòu)” : http://oldboy.blog.51cto.com/2561410/736710?
下面介紹幾個(gè)高并發(fā)網(wǎng)站架構(gòu)從動態(tài)轉(zhuǎn)靜態(tài)不用更改企業(yè)業(yè)務(wù)產(chǎn)品代碼就可以實(shí)現(xiàn)的例子。
用戶上傳的內(nèi)容了,然后還要修改,然后還要實(shí)時(shí)訪問,把他靜態(tài)化最難,思路如下:
IP\PV\UP的區(qū)別
IP就是一個(gè)公網(wǎng)地址,我們教室訪問公網(wǎng)時(shí),用的是一個(gè)IP。以天為單位
pv就是瀏覽頁面的次數(shù),打開一個(gè)頁面算一個(gè)pv,不管幾個(gè)用戶訪問。現(xiàn)在一般把pv的統(tǒng)計(jì)程序放到頁面的最下邊,也就是必修瀏覽頁面到低,才會計(jì)入一次pv,防止刷pv。
老師的公司的服務(wù)器一天五千萬pv,也就是瀏覽量五千萬
百度一天千億pv,也就是一天瀏覽量五千億次
UV 就是是每臺計(jì)算機(jī)訪問時(shí),系統(tǒng)自動給這臺計(jì)算機(jī)一個(gè)Cookie,按照計(jì)算機(jī)的量來定UV
企業(yè)網(wǎng)站對IP, PV, UV的度量
對IP的度量:
分析所有Web服務(wù)器的訪問日志信息,對IP地址段去重后計(jì)數(shù),這是IT人員的基本計(jì)算手段。
在網(wǎng)站的每一個(gè)(所有)頁面結(jié)尾,嵌入JS等統(tǒng)計(jì)程序代碼,待用戶加載網(wǎng)頁后, IP即傳給統(tǒng)計(jì)IP的服務(wù)器,這種方法一般被第三方統(tǒng)計(jì)公司或企業(yè)內(nèi)部開發(fā)日志分析程序時(shí)使用。
用第三方大家比較信任的統(tǒng)計(jì)工具例如:谷歌的統(tǒng)計(jì)(GA).
對PV的度量如下:
分析Web服務(wù)的訪問日志(需要排除js.css及各種圖片的日志信息),只計(jì)算HTML.PHP等頁面數(shù)量。
在網(wǎng)站的每一個(gè)頁面結(jié)尾,嵌入Js等統(tǒng)計(jì)程序代碼,待用戶加載網(wǎng)頁后,訪問數(shù)量即傳給統(tǒng)計(jì)PV的服務(wù)器,這種方法一般被第三方統(tǒng)計(jì)公司或在企業(yè)內(nèi)部開發(fā)日志分析程序時(shí)使用
用第三方大家比較信任的統(tǒng)計(jì)工具例如:谷歌的統(tǒng)計(jì)(GA) 。
UV度量:
通過Cookie鑒別。當(dāng)客戶端第一次訪問某個(gè)網(wǎng)站服務(wù)器的時(shí)候,網(wǎng)站服務(wù)器會給這個(gè)客戶端的電腦發(fā)出一個(gè)Cookie,通常放在這個(gè)客戶端電腦的C盤當(dāng)中。在這個(gè)Cookie中會分配一個(gè)獨(dú)一無二的編號,這其中會記錄一些訪問服務(wù)器的信息,如訪問時(shí)間、訪問了哪些頁面,等等。當(dāng)你下次再訪問這個(gè)服務(wù)器的時(shí)候,服務(wù)器就可以直接從你的電腦中找到上一次放進(jìn)去的 Cookie文件,并且對其進(jìn)行一些更新,但那個(gè)獨(dú)一無二的編號是不會變的。如果在一定時(shí)?間內(nèi),服務(wù)器發(fā)現(xiàn)2個(gè)來訪者對應(yīng)的是一個(gè)編號,那么自然可以認(rèn)為它來源于同一個(gè)來訪者了,于是就計(jì)算1個(gè)UV.
網(wǎng)站流量統(tǒng)計(jì)工具軟件
PWIKI ? awstats ? ?ELK收集日志。
在線統(tǒng)計(jì)流量工具。
并發(fā)連接:::
A種理解:網(wǎng)站服務(wù)器每秒能夠接收的最大用戶請求數(shù)。
B種理解:網(wǎng)站服務(wù)器每秒能夠響應(yīng)的最大用戶請求數(shù)。
C種理解:網(wǎng)站服務(wù)器在單位時(shí)間內(nèi)能夠處理的最大連接數(shù)。
雖然A. B的理解占IT人員中的大多數(shù),但是,按照老男孩的理解, C種理解更為準(zhǔn)一些。
就在這一刻,可以接受最大的訪問量,叫最高并發(fā)連接
每秒內(nèi),承受處理最大的連接數(shù),叫做并發(fā)連接