`
wangminshe89
  • 浏览: 690754 次
文章分类
社区版块
存档分类
最新评论

贴一个Cache类个人用得不错

 
阅读更多
PHP代码:

<?php

class cache
{

var $cacheDirectory;

var $cacheDuration=3600;

var $cacheFilename;

function cache($cacheDuration=3600,$cacheDirectory='./cache')
{
$this->cacheDuration = 0;
$this->cacheFilename = '';
$this->cacheDirectory = '.';
$this->updateCache($cacheDuration,$cacheDirectory);
}

function _makeCacheFolder()
{
if (!is_dir($this->cacheDirectory))
{
$temp = explode('/',$this->cacheDirectory);
$cur_dir = '';
for($i=0;$i<count($temp);$i++)
{
$cur_dir .= $temp[$i].'/';
if (!is_dir($cur_dir))
{
if (@mkdir($cur_dir,777)&&($cur_dir!=getcwd()))
{
$this->_writeFile($cur_dir.'.htaccess','Deny from all');
$this->_writeFile($cur_dir.'index.html','');
}
}
}
}

}

function getCacheFilename()
{
return $this->cacheFilename;
}

function _setCacheFilename($contents)
{
$this->cacheFilename = $this->cacheDirectory.'/'.md5($contents).'.txt';
}

function inCache($contents,$sty='')
{
$this->_setCacheFilename($contents);
if($sty==1)
{
return file_exists($this->cacheFilename);
}
else
{
if(file_exists($this->cacheFilename))
{
$tim=filemtime($this->cacheFilename);
if((time()-$tim)>$this->cacheDuration)
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
}
}

function readCache()
{
$contents = '';
$fp = @fopen($this->cacheFilename,'r');
if ($fp)
{
while(!feof($fp)) $contents .= fread($fp,4096);
fclose($fp);
}
return $contents;
}

function updateCache($cacheDuration=3600,$cacheFolder='./cache')
{
$this->cacheDuration = $cacheDuration;
$this->cacheDirectory = $cacheFolder;
$this->_makeCacheFolder();
}

function saveInCache($contents,$filename='')
{
$tim=filemtime($this->cacheFilename);
if (trim($filename)=='') $filename = $contents;
if ($this->inCache($filename,1)&&(time()-$tim)>$this->cacheDuration)
{
@unlink($this->cacheFilename);
}
$this->_writeFile($this->cacheFilename,$contents);
}

function _writeFile($filename,$contents)
{
if (!file_exists($filename))
{
$fp = @fopen($filename,'w');
if ($fp)
{
fputs($fp,$contents);
fclose($fp);
}
}
else
{
unlink($filename);
$fp = @fopen($filename,'w');
if ($fp)
{
fputs($fp,$contents);
fclose($fp);
}
}
}

}
?>

PHP代码:

使用方法:
include_once(_CONPATH_."Class/Class_Cache.php");
$cache=new cache();
if($cache->incache($_SERVER['QUERY_STRING']))
{
$output=$cache->readcache();
}
else
{
ob_start();
//这里是输出的内容
$output = ob_get_clean();
$cache->saveInCache($output,$_SERVER['QUERY_STRING']);
}
unset($cache);
print($output);
exit;
分享到:
评论

相关推荐

    查看谷歌、火狐浏览器缓存文件

    - 鼠标右键点击筛选后的条目,选择“Copy Link Address”复制链接,然后用下载工具(如迅雷)粘贴链接下载。 二、火狐Firefox浏览器缓存文件 1. 查找缓存文件: - Windows系统:用户目录下的“AppData\Roaming\...

    2017年北大信科经验贴1

    1. **基础阶段**:从2016年3月开始,使用全书和课本复习高数和线代,两个月内完成课本和课后习题,期间遇到的难题和错误题目记录在笔记本上,以便后续解决。 2. **强化阶段**:5月份开始过全书的高数和线代部分,...

    计算机基础试题及答案(20211006214034).pdf

    Byte是计算机存储的基本单位,通常一个字节可以存储一个字符。 4. 目前微型计算机中的高速缓存(Cache)大多数是动态随机存储器(D)。Cache用于临时存储处理器频繁访问的数据,提高计算机运行速度。 5. 微机配置...

    缓存文本「Cache Text」-crx插件

    这是我的一个个人项目,最初只是由缓存查找功能组成。使用此功能的动机是,我不想一遍又一遍地在搜索框中键入相同的内容。相反,我可以仅依靠绑定来搜索我想要的内容。我已将此绑定功能扩展为填充框,并为我通常访问...

    微信夹娃娃大灌篮H5源码带后台集合

    11、可限制用户每天抽100次12、用户首页集成个人中心功能、用户可查看自己详细的数据13、用户可充值、抢红包更爽,再也不用支付一次,抢一次了14、灵活强大的大转盘功能,独家开发,自己可完全个性定制。15、双佣金...

    微信夹娃娃和大灌篮H5源码带后台集合

    11、可限制用户每天抽100次12、用户首页集成个人中心功能、用户可查看自己详细的数据13、用户可充值、抢红包更爽,再也不用支付一次,抢一次了14、灵活强大的大转盘功能,独家开发,自己可完全个性定制。15、双佣金...

    CTB v1.6 Beta 1

    增加修正: 1、论坛界面再次更换,使形象更加美观。而且速度不受影响。...15、使用了新的论坛跳转选单cache。 16、解决某个版块或者全部版块重整数据之后,论坛总帖子数没有更新的问题 17、增加了禁止IP功能

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

    大一计算机考试题含答案.pdf

    Linux是一个类Unix的操作系统;Microsoft Office是一套办公软件,包含了Word、Excel和PowerPoint等。 2. 硬件组件:提到了CPU、RAM(随机存取存储器)、ROM(只读存储器)、CMOS(互补金属氧化物半导体)、Cache...

    《计算机应用基础知识》重点总结201643.pdf

    1. **计算机发展史**:ENIAC是世界上第一台电子数字积分计算机,诞生于1946年,使用的是电子管作为主要元件。计算机经历了电子管、晶体管、集成电路到大规模、超大规模集成电路的四个发展阶段。 2. **计算机硬件**...

    计算机基础试题及答案.pdf

    3. **Byte和Bit**:一个Byte包含8个比特(D)。Byte是计算机存储的基本单位,比特则是最小的存储单位。 4. **Cache**:微型计算机中的高速缓存(Cache)通常使用的是动态随机存储器(D)。Cache用于提高CPU访问内存...

    程序员英语词汇.docx

    - **定义**: 类的一种泛型版本,可以使用不同类型实例化。 - **应用场景**: 实现通用的类定义,提高代码复用性。 #### 39. 清单 (Clipboard) - **定义**: 计算机系统中用于暂存数据的地方,支持复制和粘贴操作。 - ...

    ClipCache中文版

    此外,ClipCache不仅是一个记录器,还是一个快速剪贴工具。通过快捷键或者自定义菜单,你可以迅速调出剪贴板历史,选择需要的内容直接粘贴,极大地提高了工作效率。对于经常需要在不同文档间复制粘贴的用户,比如...

    高职计算机基础教案.pdf

    随后的“1971(PC)”可能是指第一个商用个人电脑的时代,即1971年Intel推出了世界上第一个微处理器Intel 4004,这为个人电脑的普及奠定了基础。从这段内容中我们可以提取的知识点包括计算机历史和微处理器的发展。 ...

    《计算机应用基础知识》重点总结2016.4.pdf

    - Windows 7是个人计算机广泛使用的操作系统,负责管理资源、控制程序、改善人机交互等。 - 操作系统的组件包括桌面、开始菜单、任务栏等,提供了丰富的用户界面。 9. Windows 7特性: - 桌面背景可以个性化定制...

    计算机冲刺密押题一 带答案 权威辅导...(1).doc

    计算机冲刺密押题一 带答案 权威辅导文档主要涵盖了计算机基础知识,包括信息与数据的区别、进制转换、汉字编码、计算机硬件结构、操作系统、编程语言、缓存技术、总线系统以及常用软件应用等多个知识点。...

    计算机一级考试七.pdf

    - 操作系统是管理计算机硬件与软件资源的程序,Windows是目前最为广泛使用的个人计算机操作系统之一。快捷键例如Ctrl+Space、Shift+/在Windows中可能与特定的系统操作有关。 - 计算机网络基础知识包括理解网络是如何...

    计算机专升本考试模拟试题(含答案).doc

    - **完整计算机系统**: 一个完整的计算机系统由**硬件系统**和**软件系统**两大部分组成。 - **硬件系统**: 包括中央处理器(CPU)、存储器、输入/输出设备等物理部件。 - **软件系统**: 包括系统软件和应用软件。 ...

    南开14秋学期计算机应用基础在线作业答案.doc

    2. 在Word中,每个段落的结束处有一个**段落标记**,用于区分不同段落。 3. **TCP**协议全称为**传输控制协议**,是互联网上最基础的协议之一,负责在两个通信端点之间建立可靠的连接并确保数据的有序传输。 4. ...

Global site tag (gtag.js) - Google Analytics