關於頁面php文件執行階段php
語法分析——》編譯——》運行html
如何優化頁面的響應時間數據庫
動態頁面靜態化數組
優化數據庫緩存
使用負載均衡服務器
使用緩存負載均衡
頁面靜態化可以解決的問題 1.減小服務器腳本的計算時間 2.下降服務器的響應時間 可是靜態化不適用於內容常常變換的頁面。tcp
Buffer認知函數
Buffer就是一個緩衝區,一個內存地址空間,用於存儲數據的區域優化
輸出流程
內存-》php buffer-》tcp-》終端
將Php.ini中 output_buffering = on Php5.3以上默認是開啓的。
Ob_get_contents() 獲取php緩衝區的文件
若是php.ini緩衝區沒有開啓,能夠再腳本上部添加ob_start();開啓
php如何實現頁面純靜態化呢?
基本方式
1.File_put_contents()函數
2.使用php內置緩存機制實現頁面靜態化 – output_buffering
操做緩衝區的函數ob_*
Ob函數
Ob_start 打開輸出控制緩衝
Ob_get_contents 返回輸出緩衝區內容
Ob_clean 清空(擦掉)緩衝區內容
Ob_get_clean 獲得當前緩衝區的內容並刪除當前輸出緩衝區
這四個是核心參數,靜態化的核心思想就是,將保存到緩衝區的內容拿出來,保存在本地文件內。例如:
準備兩個文件,一個是模板文件template.php,一個實現靜態化的腳本index.php。
<!doctype html> <html> <head> <meta charset='utf-8' /> <title> <title>這裏是一個模板文件 template.php </title> </title> </head> <body> <ul> <?php foreach ($arr as $key => $value) { ?> <li><?php echo $value['title'] ?></li> <?php } ?> </ul> </body> </html>
下面開始是實現將上面的模板文件靜態化的過程。
<?php //按照常規套路的話,這個數組應該是從數據庫中拿到的,這裏爲了簡便就直接準備一個二位數組 $arr = array( 0=>array('title'=>'這裏是第一個標題'), 1=>array('title'=>'這裏是第二個標題'), 2=>array('title'=>'這裏是第三個標題') ); //緩衝區必需要在輸出以前開啓 ob_start(); //把模板文件引入 include_once('./template.php'); //從緩衝區拿到文件,寫到本地保存起來 if(file_put_contents('./text.txt', ob_get_clean())){ echo 'success'; }else{ echo 'error'; } ?>
頁面靜態化的原理就是這樣了。