1. 如果伺服器傳過來的數據量過大,怎麼處理
說白了就是伺服器的承受能力。 第一,確認伺服器硬體是否足夠支持當前的流量。
普通的P4伺服器一般最多能支持每天10萬獨立IP,如果訪問量比這個還要大,那麼必須首先配置一台更高性能的專用伺服器才能解決問題,否則怎麼優化都不可能徹底解決性能問題。
第二,優化資料庫訪問。
伺服器的負載過大,一個重要的原因是CPU負荷過大,降低伺服器CPU的負荷,才能夠有效打破瓶頸。而使用靜態頁面可以使得CPU的負荷最小化。前台實現完全的靜態化當然最好,可以完全不用訪問資料庫,不過對於頻繁更新的網站,靜態化往往不能滿足某些功能。
緩存技術就是另一個解決方案,就是將動態數據存儲到緩存文件中,動態網頁直接調用這些文件,而不必再訪問資料庫,WordPress和Z-Blog都大量使用這種緩存技術。我自己也寫過一個Z-Blog的計數器插件,也是基於這樣的原理。
如果確實無法避免對資料庫的訪問,那麼可以嘗試優化資料庫的查詢SQL.避免使用Select *from這樣的語句,每次查詢只返回自己需要的結果,避免短時間內的大量SQL查詢。
第三,禁止外部的盜鏈。
外部網站的圖片或者文件盜鏈往往會帶來大量的負載壓力,因此應該嚴格限制外部對於自身的圖片或者文件盜鏈,好在目前可以簡單地通過refer來控制盜鏈,Apache自己就可以通過配置來禁止盜鏈,IIS也有一些第三方的ISAPI可以實現同樣的功能。當然,偽造refer也可以通過代碼來實現盜鏈,不過目前蓄意偽造refer盜鏈的還不多,可以先不去考慮,或者使用非技術手段來解決,比如在圖片上增加水印。
第四,控制大文件的下載。
大文件的下載會佔用很大的流量,並且對於非SCSI硬碟來說,大量文件下載會消耗CPU,使得網站響應能力下降。因此,盡量不要提供超過2M的大文件下載,如果需要提供,建議將大文件放在另外一台伺服器上。目前有不少免費的Web2.0網站提供圖片分享和文件分享功能,因此可以盡量將圖片和文件上傳到這些分享網站。