PHPページ静態化実現

2167 ワード

現在のWebサイトでは、データベースとのやり取りが一般的で、アクセスが大きいとデータベースに大きなプレッシャーがかかります.いくつかのダイナミックページで実行された結果をキャッシュし、次にアクセスするときに直接キャッシュにアクセスすることで、データベースへの圧力を低減できます.同時に、サーバの応答速度を速めることもできます.キャッシュの結果は、外部メモリに保存したり、メモリに保存したりできます.前回の結果は、次のページへのアクセス時に外部メモリ(メモリ)から直接読み込まれます.
<?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サービスを使用する3つのレコードがあります.テスト結果は次のとおりです.
データベースからデータを読み出す平均実行時間は0.0008041 s程度
ダイレクトリードキャッシュファイル期間の平均実行時間:0.0000475
データベースのレコードは3つしかありません.SQLも簡単な単一テーブルクエリーです.テーブルに多くのレコードが記録されている場合、または複数のテーブルクエリーが実行される時間が長くなります.キャッシュは、データベースへのアクセス回数を減らし、応答時間を短縮できますが、キャッシュはすべてのページに適していません.アクセスするたびにページの表示内容が変化するページもあります.このようなページではキャッシュは使用できません.キャッシュは、変化の少ないページに適しています.