2015-05-27
现在的网站一般都需要与数据库进行打交道,访问量较大时会对数据库造成很大的压力。将一些动态页面执行的结果进行缓存,当下次进行访问时,直接访问缓存可以减少对数据库的压力。同时也可以加快服务器的响应速度。缓存的结果可以存放到外存上,也可以存在内存中。在下一次访问该页面时直接从外存(内存)中直接读取上次的结果。
[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);
?>
<?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也是简单的单表查询,当表的中记录很多时,或者是多表查询其执行的时间将会更长。缓存虽然能够减少访问数据库的次数,加速响应时间,但缓存并不适合所有的页面。有些页面可能每次访问时其页面的显示的内容就会发生变化,这样的页面显然不能使用缓存。对于那些变化很少的页面才比较适合使用缓存。
1
CI框架连接数据库配置操作以及多数据库操作
09-05
2
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
05-17
3
C语言关键字及其解释介绍 C语言32个关键字详解
04-05
4
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
04-26
5
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
09-05
6
将视频设置为Android手机开机动画的教程
12-11
7
PHP中的(++i)前缀自增 和 (i++)后缀自增
09-05
8
常用dos命令及语法
09-27
PHP中include和require区别之我见
2014-09-05
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
2017-04-12
php递归返回值的问题
2014-09-05
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
单片机编程好学吗?单片机初学者怎样看懂代码
2022-03-21
PHP 教程之如何使用BLOB存取图片信息实例
2014-09-05
零基础的初学者怎样学习java,或者应该先学什么?
2022-03-21
学ug编程如何快速入门?
2022-03-17
PHP数组函数array
2014-09-05
学习使用C语言/C++编程的7个步骤!超赞~
2022-03-20
球球大作战汉化版下载v19.7.1 安卓版
其它手游 170.54MB
下载
葫芦侠三楼最新破解版下载v4.4.0.6 安卓版
其它手游 34.82MB
下载
葫芦侠7楼破解版免费下载v4.4.0.6安卓最新版
其它手游 34.82MB
下载
葫芦侠八楼免费版下载v4.4.0.6安卓版
其它手游 34.82MB
下载
葫芦侠3楼破解版免费下载v4.4.0.6安卓手机版
其它手游 34.82MB
下载
像素漫斗抱歉,“八神庵”是特指游戏角色的专有名词,不存在符合要求的常用同义词近义词。下载v1.00安卓版
其它手游 206.87MB
下载
葫芦侠4楼破解版游戏修改器下载v4.4.0.6安卓免费版
其它手游 34.82MB
下载
末日餐厅安卓版下载v1.35安卓版
其它手游 73.98MB
下载葫芦侠十楼免费破解版下载v4.4.0.6安卓版
下载
葫芦侠8楼最新破解版下载v4.4.0.6安卓版
下载
猫娘乐园世界连结正版下载v1.9.1 安卓版
下载
像素漫斗全员下载v1.00安卓版
下载
葫芦侠8楼手机版下载v4.4.0.6安卓版
下载
末日餐厅正版官网入口下载v1.35安卓版
下载
我的汉克狗正版下载v26.4.1.48473 安卓版
下载
像素漫斗u鼬神最新版本下载v1.00安卓版
下载