1. 程式人生 > >php頁面靜態化

php頁面靜態化

post time put get action 靜態緩存 php lse 部分

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)
{
	//如果存在對應的靜態文件,則直接訪問
	require_once("match.html");
}else{
	//這裏用數組來仿真數據庫操作,現實一般都是操作數據庫得到對應數據
	$student = array("huangxing","chenyuwei",‘xufei‘,‘zhangjingwen‘,‘xuepei‘);
	ob_start();
	//載入模板
	require_once("muban.php");
	file_put_contents("match.html",ob_get_clean());
	require_once(‘match.html‘);
	
}

  muban.php

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<ul>
	<?php foreach ($student as $key => $value) {?>
		<li><?php echo $value;?></li>
	<?php } ?>
	</ul>
</body>
</html>

  然後在瀏覽器執行test.php,就可以看到項目中生成了match.html靜態文件。

以上是一個全靜態化的demo,現實項目中可能會遇到局部動態化的情況。如商城首頁,大部分是不需要修改的,但是可能有一個實時的活動需要在首頁展示,這是可以使用ajax異步加載技術。

一般的框架中都自定義好了頁面靜態化函數,或者相關配置,以thinkphp3.2為例,只需要在配置文件做相關配置就可以,具體可以參考thinkphp手冊 緩存=>靜態緩存

<?php
return array(
	‘HTML_CACHE_ON‘     =>    true, // 開啟靜態緩存
	‘HTML_CACHE_TIME‘   =>    3600,   // 全局靜態緩存有效期(秒)
	‘HTML_FILE_SUFFIX‘  =>    ‘.shtml‘, // 設置靜態緩存文件後綴
	‘HTML_CACHE_RULES‘=> array(// 定義靜態緩存規則
		‘Index:index‘    =>array(‘{:controller}_{:action}‘),
		),
	‘HTML_PATH‘=>‘./HTML/‘,
);

  這裏需要註意的就是 HTML_CACHE_RULES

php頁面靜態化