LAMP系列之源碼層級研究Apache的具體內容如下:
要展開這個話題,我想首先需要解決好為什麼需要這樣做的問題。源碼層級看待Apache,首先需要解決態度問題哈。
追溯Apache的曆史,從Tin Berners-Lee 1991年編寫的CERN HTTP伺服器算起,已經有20多年歷史了。當下,Apache可以說是最流行Web伺服器。facebook,google,百度等大型互連網公司所使用的web server屬於定製過的Apache,廣義上也算是Apache吧,這樣看的話,互連網流量的絕大部分都是由Apache伺服器提供。PHP方面,雖然現有後起之秀nginx,網上也到處都是Apache和nginx評測文章,論調基本一致:nginx比Apache更優。這裡不做比較,只要你承認,Apache的的確確是一款優秀的web server就足以了,至於這一點,我想就算是nginx的擁躉,也不會質疑這一點。Apache良好的模組化架構設計已經成為經典的伺服器架構。
然而,看看電腦書架上的Apache的書,幾乎都是講如何使用Apache的,很少有對Apache進行源碼層級研究的,可是,功利一點的角度來看,很多大公司在進行招聘的時候,又希望招到那些熟悉Apache模組的,最好還有Apache模組開發經驗的人。從實踐到理論來看,我想,源碼層級研究Apache,對於相關從業人員來說,是很有必要的。單單從軟體開發的角度來看,Apache由於自身優秀的架構,任何深入研究它的人,都可以吸取豐富的營養。
源碼層級研究Apache,我想到的一個很重要的原因,那就是業務的變遷所致。隨著業務的變化,我們在開發應用的時候,經常要在現有Apache模組的基礎上開發新的模組,或是修改已有模組。舉個簡單的例子,現在很熱門的SNS遊戲,很多時候用戶端需要向服務端發送請求,我的經驗表明,很多請求僅僅需要伺服器端返回幾個位元組的結果。但是,我們都明白,Apache採用HTTP協議,不管請求還是返回結果,基本都有三部分組成:請求行(返回狀態),頭部,資料體。就算你僅僅返回一個位元組的處理結果,其也要返回一個龐大的資料流。對於以前的網頁型的應用來說,那點頭部資訊對於網頁中的CSS樣式,圖片等資訊來說可以忽略不計。但是,在SNS這一類型的應用中就需要仔細斟酌了。很受歡迎的SNS遊戲一般都面臨著極大的伺服器壓力,我們在架設SNS伺服器的時候,根據我們的應用是修改定製Apache模組,將極大的減小應用對於伺服器的壓力。
通過文章的闡述,我們明白了許多道理,LAMP 的Apache模組是非常好用的,但是需要改進!