PHP靜態化技術

不該相遇在秋天發表於2017-11-08

 

很多框架的模板引擎都有頁面靜態化的功能  目的是為了優化網站執行時間

 

靜態化分兩種  純靜態和偽靜態

 

一. 純靜態

純靜態展示的是實實在在的靜態頁面
執行PHP程式 判斷是否存在靜態頁 如果存在 展示靜態頁 如果不存在 生成靜態頁 再展示
實現方法 是PHP的ob緩衝

    //PHP程式一系列邏輯 並將要展示的資料賦值給某些變數準備在模板中使用
    ob_start();//開啟ob緩衝區 也可以在配置檔案中開啟 
    require_once('template/index.php');//引入模板檔案 也有可能是html檔案 此時模板中的變數已全部解析替換
    $s = ob_get_contents(); //將緩衝區的內容取出
    file_put_contents('./index.html', $s);//將緩衝區的內容寫入一個靜態檔案 一般的做法是將檔案路徑加密之後作為檔名

 

二.偽靜態

偽靜態就是在url上看起來是靜態 實際上它走的還是動態流程
http://www.baidu.com/home/1.html
實現方法有兩種
1.是專案路由解析把字尾拎出來
  $_SERVER變數裡可以抓出url上面的所有節點 拆分成自己想要的即可 該替換的替換 該組合的組合
2.是Apache重寫功能rewrite
  開啟Apache重寫功能 在專案目錄中建立.htaccess檔案寫入規則
比如寫入如下內容

    RewriteEngine on  
    RewriteRule ^localhost/([a-zA-Z]{1,})/([0-9]{1,})\.html$ localhost/$1.php?id=$2

如瀏覽器訪問localhost/home/1.html 實際上被apache重寫為localhost/home.php?id=1
重寫規則的細節規則有點多,有興趣的朋友可以去研究。

 

靜態化技術也就這兩種 偽靜態只是url看起來好看 實際上對程式並沒有優化效果

 

相關文章