测试环境:
WindowsXP IIS6 / PHP 5.21 / MySQL 5.1
数据库有283222条数据.
测试情况:
select id 不使用缓存的情况下,用Adodb的分页查询(PageExecute),每页需要 5-6秒
select * 不使用缓存的情况下,用Adodb的分页查询(PageExecute),每页需要 20秒以上.
使用Adodb的缓存分页查询(CachePageExecute),打开速度未见明显提升,因此放弃使用CachePageExecute .
使用Smarty缓存,查询结果生成静态文件保存.访问速度如同静态页,但不是静态页,是要经过php处理的.(决定使用此方法)
方法代码:
<?php
include_once('./islogin.php');
require './libs/smarty/Smarty.class.php';
include_once('./config/app.php');
$per = 20; //每页显示数量
$page = isset($_GET['page'])? $_GET['page'] : 1 ;
if(ereg('^[0-9]+$',$page) !=1)
$page = 1;
$sm = new Smarty;
$sm -> template_dir = "./templates/$web_lang";
$sm -> compile_dir = "./templates_c/$web_lang";
$sm ->caching = true; //开启缓存
//判断缓存是否存在
if(!$sm->is_cached('master_websites.htm',$_SESSION['author_id'],$page)) {
$uid = $_SESSION['author_id'];
$sql = "select name,id,email from users";
$websites = $webconn-> PageExecute($sql, $per, $page); //分页查询
$page_str = '';
if (!$websites->EOF ) //&& (!$websites->AtFirstPage() || !$websites->AtLastPage())) {
if(!$websites->AtFirstPage())
{
$page_str .= "<a href='websites.php'>首页</a> <a href='websites.php?page=".($websites->AbsolutePage() - 1)."'>前页</a>";
}
if(!$websites->AtLastPage())
{
$page_str .= " <a href='websites.php?page=".($websites->AbsolutePage() +1)."'>后页</a> <a href='websites.php?page=".($websites->LastPageNo())."'>尾页</a>";
}
$page_str .=' '. $w['current_page'] .$websites->AbsolutePage() .' '. $w['total_page'] .$websites->LastPageNo();
$ws = $websites->GetRows();
$show = (sizeof($ws)>0);
$sm -> assign('page_title',$page_title);
$sm -> assign('ws',$ws);
$sm -> assign('show',$show);
$sm -> assign('page_str',$page_str);
$sm -> display('master_websites.htm',$_SESSION['author_id'],$page); //区分不同用户,不同页面生成的缓存文件
include_once('config/end.php');
//$sm->clear_cache(null,$_SESSION['author_id']); //清空该用户的所有缓存,在设计到修改,添加,删除操作的时候,都要记得清空.
?>