什麼是大型網站? 大型網站要滿足一下標準.
pv(page views)值, 頁面瀏覽量,一個網站的所有頁面,在24小時內被瀏覽的總的次數, 一般說 到千萬.
uv(unique visitor) 獨立訪客: 一個網站的24小時內,有多少個使用者來訪問該網站, 一般說 到10萬
ip值,一個網站的24小時內,有多少個ip訪問。在不考慮內網和區域網路的情況下,uv 等於 ip, 如果考慮的話,uv值略大於 ip,一般說 到10萬
大型網站帶來的問題
大並發
概述: 在同一個時間點,有大量的客戶來訪問我們的網站,如果訪問量過大,就可能造成網站癱瘓。
大流量
概述: 當網站大後,有大量的圖片,視頻,flash, 這樣就會對流量要求高,需要更多更大的頻寬.(花錢)
大儲存
概述:你的資料量會成海量的資料,如果我們的資料放入一張表,是無法應對的。可能對資料儲存和查詢出現問題
大型網站的常見處理方案
大並發的處理方法(對架構分層+負載平衡+叢集)
大流量的處理方案
網站圖片盡量使用背景圖。
可以啟用apache內建的資料壓縮機制(gzip ,deflate) .
使用cdn(content delivery network) 內容分髮網絡
網站圖片,在不影響觀看的情況下,盡量使用jpg(解析度底),不要使用高解析度。
大儲存的常見解決方案
使用緩衝技術(記憶體緩衝[redis,mysql資料庫(memory引擎)],頁面緩衝(頁面靜態化)
最佳化資料庫
表的設計要合理(滿足3NF) 原子性,唯一性,拆分表
添加索引(主鍵索引|全文索引|唯一索引|普通索引|空間索引)
最佳化sql語句
分表( 水平分表,垂直分表),分區
讀寫分離
最佳化my.ini配置
軟體硬體應當升級
頁面靜態化
使用php自己的ob緩衝技術實現
使用模板替換技術實現
主流的mvc架構(tp,yii,laravel)模板引擎一般都內建頁面靜態化
使用ob緩衝
PHP程式在運行過程中,存在一個程式緩衝,該緩衝必須存在,程式員無法控制。
PHP程式運行過程中,我們可以開啟ob緩衝(在php5.2前,預設ob是關閉的,在後面版本預設是開啟的), 開啟ob緩衝的方法有兩個
a) 修改php.ini output_buffering = 4096,
b) 還有就是直接在php檔案中開啟 ob_start();
PHP程式運行過程中,如果開啟了ob緩衝,那麼echo 資料會被放入到ob中,header資訊都是放入程式緩衝
當php檔案執行完畢後,就會把ob緩衝的資料重新整理到程式緩衝,然後apache封包,返回給瀏覽器。