php頁面靜態化

2022-11-27 14:27:41 字數 1865 閱讀 2289

1、在開發專案時,有時會遇到一些頁面資料量特別大,但是又不經常改變的情況,如**首頁等,這時候就需要進行頁面靜態化,減輕伺服器和資料庫的壓力。

這裡我們先用原生的php寫一個簡單的demo,用來理解頁面靜態化的原理,然後再嘗試用框架說明一下(thinkphp)。

主要會使用到php的ob相關函式和檔案操作函式file_put_contents.

這裡在專案中新建了兩個檔案,test.php(控制器),muban.php(模板)

test.php

<?php

if(file_exists("match.html") && (time()-filemtime("match.html"))<300)

else

muban.php

然後在瀏覽器執行test.php,就可以看到專案中生成了match.html靜態檔案。

以上是一個全靜態化的demo,現實專案中可能會遇到區域性動態化的情況。如**首頁,大部分是不需要修改的,但是可能有一個實時的活動需要在首頁展示,這是可以使用ajax非同步載入技術。

<?php

return array(

'html_cache_on' => true, // 開啟靜態快取

'html_cache_time' => 3600, // 全域性靜態快取有效期(秒)

'html_file_suffix' => '.shtml', // 設定靜態快取檔案字尾

'html_cache_rules'=> array(// 定義靜態快取規則

'index:index' =>array('_'),

),'html_path'=>'./html/',

);

這裡需要注意的就是 html_cache_rules

1、在開發專案時,有時會遇到一些頁面資料量特別大,但是又不經常改變的情況,如**首頁等,這時候就需要進行頁面靜態化,減輕伺服器和資料庫的壓力。

這裡我們先用原生的php寫一個簡單的demo,用來理解頁面靜態化的原理,然後再嘗試用框架說明一下(thinkphp)。

主要會使用到php的ob相關函式和檔案操作函式file_put_contents.

這裡在專案中新建了兩個檔案,test.php(控制器),muban.php(模板)

test.php

<?php

if(file_exists("match.html") && (time()-filemtime("match.html"))<300)

else

muban.php

然後在瀏覽器執行test.php,就可以看到專案中生成了match.html靜態檔案。

以上是一個全靜態化的demo,現實專案中可能會遇到區域性動態化的情況。如**首頁,大部分是不需要修改的,但是可能有一個實時的活動需要在首頁展示,這是可以使用ajax非同步載入技術。

<?php

return array(

'html_cache_on' => true, // 開啟靜態快取

'html_cache_time' => 3600, // 全域性靜態快取有效期(秒)

'html_file_suffix' => '.shtml', // 設定靜態快取檔案字尾

'html_cache_rules'=> array(// 定義靜態快取規則

'index:index' =>array('_'),

),'html_path'=>'./html/',

);

這裡需要注意的就是 html_cache_rules

php fpm優化

在運維工作中,如果公司使用的是php nginx架構,有時候會遇到nginx報502的錯誤,出於本能反應,是不是mysql掛掉了,然後仔細檢查了mysql後,發現並沒有,這個時候就要考慮nginx後面幹活的服務員們 php fpm 了,當飯店人來的太多的時候,服務員不夠用,客人只能等著乾著急了。等不...

PHP元件化開發

設計思想中有兩種極端 大而全 小而美。一般我們常用的庫是小而美,用的框架是大而全。從symfony實現component式開發開始,框架的元件化逐漸成為趨勢。我們可以任意的組合各種compoent來形成自己的php框架,比如b團隊出的db及orm引擎 b團隊出的快取引擎 e團隊出的route對映引擎...

PHP優化小建議

php優化小建議 1 foreach 效率更高,儘量用 foreach 代替 while 和 for 迴圈 2 迴圈內部不要宣告變數,尤其是物件這樣的變數 3 在多重巢狀迴圈中,如有可能,應當將最長的迴圈放在內層,最短迴圈放在外層,從而減少 cpu 跨迴圈層的次數,優化程式效能 4 用單引號替代雙引...