1. 程式人生 > >PHP 大型網站優化 大資料大併發大流量

PHP 大型網站優化 大資料大併發大流量

什麼是大型網站? 大型網站要滿足一下標準.

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封包,返回給瀏覽器。