萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> 實現PHP頁面靜態化

實現PHP頁面靜態化

 <?php

	
	//首先查看緩存文件
	if(file_exists("static.html")){
		//緩存時間為3分鐘
		if(time()-filemtime("static.html")<60*3){
			//將靜態文件內容返回給客戶端
			$start_time = microtime();
			echo "我是從靜態文件中讀取的數據:"."<br/>";
			echo file_get_contents("static.html");
			$end_time   = microtime();
			echo "靜態文件使用時間:".($end_time-$start_time);
			exit;
		}
	}
	//如果是首次訪問,或者是上次緩存的時間超過3分鐘,則從數據庫中讀取數據
	$host     = "127.0.0.1";
	$user     = "root";
	$password = "123456";
	//記錄開始時間
	$start_time = microtime();
	mysql_connect($host,$user,$password);
	mysql_select_db("mydb");
	mysql_query("set names utf8");
	
	$sql 		= "SELECT name,address,email FROM users";
	$resource 	= mysql_query($sql);
	echo "我是從數據庫中讀取的數據:<br/>";
	ob_start();//打開輸出緩沖
	echo "<table border='1'><tr><th>姓名</th><th>地址</th><th>Email</th></tr>";
	//輸出取得的信息
	while($userInfo = mysql_fetch_assoc($resource)){
		echo "<tr>";
		echo "<td>".$userInfo['name']."</td>";
		echo "<td>".$userInfo['address']."</td>";
		echo "<td>".$userInfo['email']."</td>";
		echo "</tr>";
	}
	$end_time=microtime();
	$str=ob_get_contents();//獲取緩沖區的內容
	ob_end_flush();
	echo "從數據庫讀數據的時間:".($end_time-$start_time);
	file_put_contents("static.html",$str);
?>

users表中有三條記錄,使用的是apache服務。測試結果如下:
從數據庫中讀數據其平均執行時間為:0.0008041s左右

直接讀緩存文件期平均執行時間為:0.0000475

數據庫中的記錄只有三條,SQL也是簡單的單表查詢,當表的中記錄很多時,或者是多表查詢其執行的時間將會更長。緩存雖然能夠減少訪問數據庫的次數,加速響應時間,但緩存並不適合所有的頁面。有些頁面可能每次訪問時其頁面的顯示的內容就會發生變化,這樣的頁面顯然不能使用緩存。對於那些變化很少的頁面才比較適合使用緩存。

copyright © 萬盛學電腦網 all rights reserved