優化頁面的響應時間php
緣由:當訪問一個網站的時候,頁面加載的速度很是的慢,用戶體驗很差,用戶流失css
解決方案:html
一、 動態頁面靜態化mysql
二、 優化數據庫redis
三、 使用負載均衡sql
四、 使用緩存 redis和memcachemongodb
動態頁面靜態化數據庫
若是頁面不常常改動,並且用戶訪問量大,動態頁面靜態化就是一個很是有效的解決方案。 5分或者10分apache
實質:生成靜態的html文件瀏覽器
好處:減小服務器腳本的運行時間
下降服務器的相應時間
PHP文件的執行順序
語法解析-> 編譯-> 運行
Html頁面只須要直接運行
一、pv值(page views)網站瀏覽量:
概念:一個網站,全部的頁面,在一天24小時內,被訪問的總量,達到千萬級別,或者幾百萬以上。
二、uv值(unique visitor)獨立訪客:
概念:一個網站,在一天24小時內,有多少個用戶來訪問咱們的網站。uv值幾十萬個,
三、獨立 ip,
概念:一個網站,在一天24小時內,有多少個獨立ip來訪問咱們的網站。
若是要考慮公司的局域網,uv值略大於獨立ip的。
一、高的併發量。
併發量:一個網站的,在同一個時間點(1秒內),有多少個用戶正在請求同一個地址的網站。
二、大的流量(帶寬)
帶寬需求變大。
三、數據存儲的問題。
當數據表裏面的記錄很是大,從容量來講,達到 GT級別,要快速的查找到想要的數據。
網站的架構,採用分層設計,使用負載均衡和集羣。
能夠把一些css樣式文件和js,一些背景圖,合併成一個文件。
把一些更新不是很頻繁的資源,好比css,js,圖片,緩存到瀏覽器端,當瀏覽器請求同一資源時,直接從瀏覽器緩存裏面取出。
最終目標:不查詢數據庫或少查詢數據庫,在查詢數據庫時,要快速的查詢到數據。
(1)磁盤緩存(頁面靜態化技術)
(2)內存緩存
內存緩存技術:
memcache,redis,mongodb,mysql的memory存儲引擎
把一個動態(操做數據庫)的php頁面,轉換成一個靜態的.html頁面
實現步驟;
一個http請求,返回的數據分兩部分,響應頭部信息和響應主體。
(1)拿到響應主體數據內容。(ob緩衝)
(2)把響應主體數據內容,寫入到html文件中,(file_put_contents)
(3)直接訪問html文件。
ob緩存:output_buffering(輸出緩存),用於緩存響應主體的數據內容。
如何開啓:
第一種方式:在php.ini文件中,
第二種方式:在頁面中使用ob_start()函數,來開啓。
兩種方式的區別是,ob_start()只在當前頁面有效,
ob_start( );開啓
ob_get_contetns();獲取ob緩存裏面的數據內容。
ob_clean();//清空ob緩存裏面的數據,不關閉ob緩存。
ob_end_clean();//清空ob緩存裏面的數據,並關閉ob緩存。
ob_flush();//把ob緩存裏面的數據給刷新(移動,推送)到程序緩存,不關閉ob緩存。
ob_end_flush();//把ob緩存裏面的數據給刷新(移動,推送)到程序緩存,並關閉ob緩存。
真靜態:實實在在的生成一個html頁面。
僞靜態:從表面上看是訪問的一個靜態頁面,實際上仍是訪問的是動態頁面。好比以下地址:
http://www.abc.com/news-music-id12_10.html
其實是訪問:http://www.abc.com/news.php?type=music&id=12&page=10頁面。
僞靜態主要是利於seo的。
實現方式:
真靜態實現方式:
第一種:使用ob緩存技術。
第二種:使用模板替換技術
僞靜態的實現方式:使用apache的 rewrite機制(url重寫機制)
哪些網站適合於真靜態?
網站頁面訪問比較頻繁的,更新不是很頻繁,好比一些新聞類型的網站,不適合於要求實時更新的一些網站,好比股票類型的網站,