如何優化頁面響應時間:
如果頁面中的一些內容不經常改動,可以使用動態頁面靜態化。好處是:減少服務器腳本的計算時間;降低服務器的響應時間。
1、動態URL地址設置靜態形式(偽靜態)
例如:http://xxx.com/index.php?c=play&id=1111 =>
http://xxx.com/play/1111.html (並不是一個純靜態頁面)
2、buffer
buffer其實就是緩沖區,一個內存地址空間,主要用於存儲數據區域。
編寫一個buffer.php文件,並保存,並不是直接將文件內容保存在磁盤裡,而是先把內容寫入到buffer中,當一個buffer寫滿的時候,會把buffer中的數據寫入到磁盤裡,這是操作系統的buffer。
當執行一個PHP程序的時候,如果有輸出內容,會先放到輸出緩沖區,數據再通過tcp傳給客戶端或浏覽器。
要想數據能夠放到輸出緩沖區,首先打開輸出緩沖,通過php.ini文件output_buffering = On或者ob_start(),然後使用ob_get_contents()獲取輸出緩沖區內容。
3、PHP實現頁面純靜態化
純靜態化的html文件放在服務器端的磁盤。
基本方式:
int file_put_contents ( string $filename
, mixed $data
[, int $flags
= 0 [, resource $context
]] )
成功會返回寫入到文件內數據的字節數,失敗時返回false。
ob函數
ob_start(); 打開輸出緩沖區
ob_get_contents(void);返回輸出緩沖區內容
ob_clean(void);清空輸出緩沖區
ob_get_clean(void);得到當前緩沖區的內容並刪除當前輸出緩沖區
生成純靜態頁面的三種方式:
<?php
//存在index.html並且在有效時間以內(5分鐘) if (file_exists('index.html') && (time()-filemtime('index.html') < 300)) { require_once 'index.html'; }else{ ob_start(); //連接數據庫獲取數據並填充到模板 echo 'helllo world'; file_put_contents('index.html', ob_get_contents()); } ?>
後台手動設置,主動生成
crontab -e //編輯某個crontab文件,文件內容如:*/5 * * * * php執行程序所在目錄 /xx/xx.php
http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html
4、偽靜態
PHP處理偽靜態:正則表達式匹配
//http://xxx.cn/xx/test4.php/2/11.html //http://xxx.cn/xx/test4.php?page=2&id=1,實際的訪問路徑 if(preg_match('/\/(\d+)\/(\d+).html/', $_SERVER['PATH_INFO'], $matches)){ $param['page'] = $matches[1]; $param['id'] = $matches[2]; }
Apache下rewrite配置:
http://myapps.com/detail/12.html ==> http://myapps.com/apps/detail.php?id=12(實際訪問的路徑)
httpd.conf文件:開啟LoadModule rewrite_module modules/mod_rewrite.so
extra/httpd-vhosts.conf文件 作如下配置:
<VirtualHost 127.0.0.2:80>
ServerAdmin [email protected]
DocumentRoot "D:/wamp/www/myProject"
ServerName myapps.com
ErrorLog "logs/dummy-host2.example.com-error.log"
CustomLog "logs/dummy-host2.example.com-access.log" common
RewriteEngine on
#如果detail目錄下有12.html文件,就優先訪問該目錄下的文件
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteRule ^/detail/([0-9]*).html$ /apps/detail.php?id=$1
</VirtualHost>
http://www.onexin.net/apache-rewrite-detailed/