早上起來無事,隨便百度了下,結果突然看到一篇關係facebook創新優化網站的技術文章,很是著迷,也有了一點體會,技術不是萬能的神,我們要吸收,轉化為對自己網站建設有用的東西,下面僅僅為本人的一寫想法,僅供參考:

   1,看到facebook 採用了bigpipe大管道技術,就是加速網頁載入速度的一種技術,其中就用到了平行處理html,js等,這個我們其實可以採用nginx的加強版 淘寶tengine就有類似的簡單功能,我們小網站就不用考慮了直接選用tengine就ok,有自動合併處理ccs,html,js分發的功能。

  1,圖片搜尋優化,為了減低作業系統本身的搜尋負擔,facebook把多張圖片+一個特殊的index程式=一個帶索引功能的大檔案。非常厲害的手段,這個可能不是一般人能設計出他們那麼高效的程式的,我自己認為,只要合理的安排,控制,網站目錄安排,控制一個資料夾中檔案數量的大小就夠了,畢竟本身的系統也是挺高效的,每次新增圖片,超過規定的目錄優化數量就,再新增一個新目錄,追加下去。當然了,為了管理上的方便,可以加入到mysql中,但是最後還是要呼叫系統底層檔案定位。至於一個目錄放多少檔案,一個檔案多大為好呢,本人經驗一個目錄大檔案5K左右,小檔案10K左右,檔案不管動態靜態請控制在10K左右大小,不要超過100K,如果是視訊檔案請切割為25M左右,資料庫檔案則通過表資料決定,一般一個表不要超過100萬條資料,日誌檔案則控制在100M增長,同時優化ext4,或者reiserfs檔案系統!(我們麼可以多參考那些大網站的檔案大小)

   2,最狠就是facebook,竟然把php轉換為c++(難道不能轉換為彙編去!或者乾脆使用fast-cgi c/c++寫後臺呢),其實這點我們沒有必要,也沒精力技術去整,我們只要開啟zend.optim,apc,xcache等php編譯加速,優化php語句,減少php使用就可以了,當然有條件還是使用收費的jsp把,效能能提高不少,畢竟php比jsp慢.

  3,還有就是資料庫這塊,大規模使用memcached nosql資料庫,其實我們這點可以學習Twitter,把簡單非事物型別資料全部放到memcached中去(小網站,資料不大,整個64G記憶體)資料庫只是用作備份,重新整理memcached用,多建立長連線,優化sql語句,或者你要喜歡直接mysql-nosql-HandlerSocket外掛了。

  4,前端facebook使用了varnish,這是個不錯的代理,快取軟體,可以借用,除非你搞CDN,要不完全可以取代squid,如果你對nginx,深有鍾情,可以之際使用nginx負責靜態頁面,反向代理,再加一個快取!

  5,還有最重要的一點,就是他們把業務模組化,不是簡單的php應用軟體模組化,我們應該把這個思想應用到所有地方,包括記憶體,cpu,儲存硬體資源分配上。經常使用的,大壓力業務,全部放記憶體,分配更多的cpu,不常用的業務程式碼分配最少的資源!

  6,最後就是硬體了,不能跟facebook比,搞的科幻片終結者2018一樣,整個就是一個智慧化天網生態系統,我們還是借鑑淘寶吧,改花錢的地方,還是要花錢的,由於小企業,頻寬有限,可以花錢整CDN,本地伺服器最重要的硬體不能省,cpu不用說了,最少8核心吧,其次就是記憶體,絕對要超過網站內容,資料大小,其實如果要更快的話,直接上企業pcie-ssd了,別太相信硬碟,這個玩意真不可靠!雖然你raid了!

  說了那麼多,其實可以看出來,那些大流量,大門戶技術優化都是很看重細節優化的,平時我們光看中構架啊,全域性了,沒有仔細考慮那些小的東西,細節決定成敗,是一句狹隘經典名句,開源萬歲,向所有支援開源軟體設計者,以及支援開源大公司facebook,淘寶致敬!!