首页 > 技术文章 > php缓存

cyrfr 2017-03-06 21:17 原文

php缓存的方法有很多,最简单的缓存方法就是使用框架。

先说一下smarty的方法:

首先设置缓存文件位置:

$filename = "../cache/huancun.html"; //缓存文件存放的位置

设置缓存间隔:

$time = 10; //缓存有效期10秒

判断缓存文件是否存在,如果缓存文件存在直接调用缓存,如果缓存文件不存在重新缓存:

if(file_exists($filename) && ((filemtime($filename)+$time)>= time()) )
{
	//直接调用缓存
	include($filename);
}
else
{
	//重新缓存
	ob_start(); //开启内存缓存
	
	代码部分。。。。。。。
    

     $smarty->display("huancun.html"); 

              $str = ob_get_contents(); //获取内存中的缓存内容
              file_put_contents($filename,$str);

	ob_flush(); //关闭内存缓存
	
}

 如果要使用分页缓存的话需要修改为:

<?php
$p = 1;
if(!empty($_GET["page"]))
{
	$p = $_GET["page"];
}

$filename = "../cache/huancun{$p}.html"; //缓存文件存放的位置

$time = 10; //缓存有效期10秒



//判断缓存文件是否存在,如果缓存文件存在直接调用缓存,如果缓存文件不存在重新缓存
if(file_exists($filename) && ((filemtime($filename)+$time)>= time()) )
{
	//直接调用缓存
	include($filename);
}
else
{
	//重新缓存
	ob_start(); //开启内存缓存
	
	分页代码。。。。。。。。。


	$smarty->display("huancun.html");
	
	$str = ob_get_contents(); //获取内存中的缓存内容
	file_put_contents($filename,$str);
	
	ob_flush(); //关闭内存缓存
	
}

 同理,如果没有使用smarty模板。只要将ob_start()与ob_flush()之间的代码修改为普通php代码即可。

 

推荐阅读