隨著**的內容的增多和使用者訪問量的增多,無可避免的是**載入會越來越慢,受限於頻寬和伺服器同一時間的請求次數的限制,我們往往需要在此時對我們的**進行**優化和伺服器配置的優化。
一般情況下會從以下方面來做優化
什麼是靜態化?
①純靜態:將php程式生成靜態的html檔案,儲存到伺服器的磁碟中。客戶端訪問的時候直接輸出。不用指令碼解釋。在流量非常大的時候(比如每天有上百萬的訪問量的時候)會起到很好的效果。也就是說伺服器端實實在在的存在這個html頁面。
原理:在使用者訪問php程式時,首先檢測靜態的html檔案是否存在,如果存在直接輸出靜態檔案,如果靜態檔案不存在,查詢資料庫,生成靜態檔案,並輸出。
html靜態頁(真靜態)的好處有三點:一是減少伺服器對資料響應的負荷,二是載入不用調動資料庫,響應速度快。三是便於優化引擎。
缺點也有三點:一是維護不方便,每次都要手動生成。三是空間占用比較大。三是生成的檔案多了,伺服器對html檔案的響應負擔也較重。
②偽靜態:沒有靜態檔案的靜態化
url重寫的缺點:我看只有乙個,那就是效率不如生成html的,因為它不是真正意義上的靜態頁,每次請求是要讀取資料庫的。但你可以用快取技術來補償一下。
主要函式:
ob_start()函式:開啟輸出緩衝區.
函式格式
void ob_start(void)
說明:當緩衝區啟用時,所有來自php程式的非檔案頭資訊均不會傳送,而是儲存在內部緩衝區。為了輸出緩衝區的內容,可以使用ob_end_flush()或flush()輸出緩衝區的內容。
flush:重新整理緩衝區的內容,輸出。
函式格式:flush()
說明:這個函式經常使用,效率很高。
ob_get_contents :返回內部緩衝區的內容。
函式格式:string ob_get_contents(void)
說明:這個函式會返回當前緩衝區中的內容,如果輸出緩衝區沒有啟用,則返回 false.
ob_get_length:返回內部緩衝區的長度。
函式格式:int ob_get_length(void)
說明:這個函式會返回當前緩衝區中的長度;和ob_get_contents一樣,如果輸出緩衝區沒有啟用,則返回 false.
ob_end_clean:刪除內部緩衝區的內容,並且關閉內部緩衝區
函式格式:void ob_end_clean(void)
說明:這個函式不會輸出內部緩衝區的內容而是把它刪除
ob_end_flush: 傳送內部緩衝區的內容到瀏覽器,並且關閉輸出緩衝區
函式格式:void ob_end_flush(void)
說明:這個函式傳送輸出緩衝區的內容(如果有的話)
ob_implicit_flush:開啟或關閉絕對重新整理
函式格式:void ob_implicit_flush ([int flag])
說明:預設為關閉緩衝區,開啟絕對輸出後,每個指令碼輸出都直接傳送到瀏覽器,不再需要呼叫 flush()
ob_start(); //開啟輸出緩衝區
$cachetime = 10; //設定快取頁面過期時間(以秒為單位)
$cachedir = 'obtest.html'; //設定快取頁面檔案目錄
//判斷檔案是否存在或過期重新生成快取檔案
if(!is_file($cachedir) || time()-filemtime($cachedir)> $cachetime)else
頁面靜態化
header content type text html charset utf8 set time limit 0 url str file get contents url var dump str die reg isu preg match all reg,str,arr var dump...
頁面靜態化
隨著 的內容的增多和使用者訪問量的增多,無可避免的是 載入會越來越慢,受限於頻寬和伺服器同一時間的請求次數的限制,我們往往需要在此時對我們的 進行 優化和伺服器配置的優化。一般情況下會從以下方面來做優化 1.為什麼要靜態化?一 加快頁面開啟瀏覽速度,因為無需連線資料庫 二 有利於搜尋引擎優化seo ...
頁面靜態化
頁面靜態化的作用 1.避免每次訪問都要查詢資料庫的 大量 資料 2.採用主 頁靜態的方式是為 提公升主頁的訪問效率,因為主頁是 訪問量最大的頁面 1.準備主 頁靜態化工具方法 contents.crons.py from collections import ordereddict from dja...