<?php
/*
* 缓存类 cache
* 作 者:多菜鸟
* 联系邮箱:kingerq AT msn DOT com
* 创建时间:2006-05-05
* 实 例:
include( "cache.php" );
$cache = new cache(30);
$cache->cacheCheck();
echo date("Y-m-d H:i:s");
//$cache->clearCache('mv_moves.php');
$cache->caching();
*/
class cache {
//缓存目录
var $cacheRoot = "./cache/";
//缓存更新时间秒数,0为不缓存
var $cacheLimitTime = 0;
//缓存文件名
var $cacheFileName = "";
//缓存扩展名
var $cacheFileExt = "php";
/*
* 构造函数
* int $cacheLimitTime 缓存更新时间
*/
function cache( $cacheLimitTime ) {
if( intval( $cacheLimitTime ) )
$this->cacheLimitTime = $cacheLimitTime;
$this->cacheFileName = $this->getCacheFileName();
ob_start();
}
/*
* 检查缓存文件是否在设置更新时间之内
* 返回:如果在更新时间之内则返回文件内容,反之则返回失败
*/
function cacheCheck(){
if( file_exists( $this->cacheFileName ) ) {
$cTime = $this->getFileCreateTime( $this->cacheFileName );
if( $cTime + $this->cacheLimitTime > time() ) {
echo file_get_contents( $this->cacheFileName );
ob_end_flush();
exit;
}
}
return false;
}
/*
* 缓存文件或者输出静态
* string $staticFileName 静态文件名(含相对路径)
*/
function caching( $staticFileName = "" ){
if( $this->cacheFileName ) {
$cacheContent = ob_get_contents();
//echo $cacheContent;
ob_end_flush();
if( $staticFileName ) {
$this->saveFile( $staticFileName, $cacheContent );
}
if( $this->cacheLimitTime )
$this->saveFile( $this->cacheFileName, $cacheContent );
}
}
/*
* 清除缓存文件
* string $fileName 指定文件名(含函数)或者all(全部)
* 返回:清除成功返回true,反之返回false
*/
function clearCache( $fileName = "all" ) {
if( $fileName != "all" ) {
$fileName = $this->cacheRoot . strtoupper(md5($fileName)).".".$this->cacheFileExt;
if( file_exists( $fileName ) ) {
return @unlink( $fileName );
}else return false;
}
if ( is_dir( $this->cacheRoot ) ) {
if ( $dir = @opendir( $this->cacheRoot ) ) {
while ( $file = @readdir( $dir ) ) {
$check = is_dir( $file );
if ( !$check )
@unlink( $this->cacheRoot . $file );
}
@closedir( $dir );
return true;
}else{
return false;
}
}else{
return false;
}
}
/*
* 根据当前动态文件生成缓存文件名
*/
function getCacheFileName() {
return $this->cacheRoot . strtoupper(md5($_SERVER["REQUEST_URI"])).".".$this->cacheFileExt;
}
/*
* 缓存文件建立时间
* string $fileName 缓存文件名(含相对路径)
* 返回:文件生成时间秒数,文件不存在返回0
*/
function getFileCreateTime( $fileName ) {
if( ! trim($fileName) ) return 0;
if( file_exists( $fileName ) ) {
return intval(filemtime( $fileName ));
}else return 0;
}
/*
* 保存文件
* string $fileName 文件名(含相对路径)
* string $text 文件内容
* 返回:成功返回ture,失败返回false
*/
function saveFile($fileName, $text) {
if( ! $fileName || ! $text ) return false;
if( $this->makeDir( dirname( $fileName ) ) ) {
if( $fp = fopen( $fileName, "w" ) ) {
if( @fwrite( $fp, $text ) ) {
fclose($fp);
return true;
}else {
fclose($fp);
return false;
}
}
}
return false;
}
/*
* 连续建目录
* string $dir 目录字符串
* int $mode 权限数字
* 返回:顺利创建或者全部已建返回true,其它方式返回false
*/
function makeDir( $dir, $mode = "0777" ) {
if( ! $dir ) return 0;
$dir = str_replace( "\\", "/", $dir );
$mdir = "";
foreach( explode( "/", $dir ) as $val ) {
$mdir .= $val."/";
if( $val == ".." || $val == "." || trim( $val ) == "" ) continue;
if( ! file_exists( $mdir ) ) {
if(!@mkdir( $mdir, $mode )){
return false;
}
}
}
return true;
}
}
?>
分享到:
相关推荐
2. **页面缓存**:特定于Web应用,指将网页内容的副本保存在客户端(如浏览器),以便下次访问时更快地加载页面。 3. **HTTP头部**:HTTP协议中的请求和响应都包含头部信息,用于传输额外的信息,例如内容类型、编码...
在PHP编程中,缓存是一种优化网站性能的重要技术,它能减少服务器的负载,提高页面加载速度,尤其在处理大量数据库查询或者复杂计算时效果显著。本篇文章将深入探讨PHP中的文件缓存类,以及如何利用它来实现高效的...
2. **页面缓存:**页面缓存技术可以将整个网页或其部分静态化,从而减少每次请求时的动态生成过程,显著提升页面加载速度。 3. **浏览器缓存:**浏览器缓存主要用于存储用户经常访问的网页资源,如图片、样式表和...
php实现网页缓存的工具类的代码及使用方法,非常的实用。 php程序在抵抗大流量访问的时候动态网站往往都是难以招架,所以要引入缓存机制,一般情况下有两种类型缓存 一、文件缓存 二...
服务器通过配置可以缓存特定的网页内容,提高响应速度。当网站外接cache或squid服务器进行Web加速时,需要激活Apache的mod_cache模块,并进行相应的配置。 七、APC缓存扩展 APC(Alternative PHP Cache)是PHP的...
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal...
2. **缓存组设置**:根据不同类型的页面或数据设置不同的缓存组,便于管理和控制。 3. **静态缓存**:对于高流量的网站,动态缓存可能不足以应对大量请求,此时需实现静态缓存,即将页面完全转换为静态HTML文件,...
使用 Redis 实现页面缓存 本文档主要介绍了使用 Redis 实现页面缓存的方法,包括缓存 key 的设计、缓存实现的思路和代码实现。 页面缓存的目的:页面缓存的主要目的是为了提高网站的访问速度和用户体验。通过将...
浏览器会在下次访问同一页面时尝试使用缓存中的数据,从而减少网络请求,加快页面加载速度。 #### 三、PHP缓存控制函数详解 在PHP中,有一些内置函数可以帮助开发者更好地控制缓存行为。下面我们逐一介绍这些函数...
PHP页面缓存方法是针对Web开发中常见性能问题提出的一种优化策略,它可以显著减少数据库查询和服务器处理时间,从而加快页面响应速度。该技术适用于对同一页面内容的访问频率较高,且内容不经常变动的场景。在PHP中...
1. **性能提升**:通过避免重复的数据库连接、查询和解析过程,缓存可以显著减少脚本执行时间,提高页面加载速度。 2. **资源节省**:减少数据库服务器的压力,降低网络延迟,尤其是当数据库不在本地或需要远程访问...
在构建高性能的Web应用时,PHP缓存与静态化扮演着至关重要的角色。它们能够显著提升网站的响应速度,减少服务器资源的消耗,尤其对于高流量的动态网站来说更是如此。下面将详细探讨这两个概念以及如何在PHP中实现...
- **获取页面内容**:使用Redis获取已缓存的页面内容,或者在没有缓存时执行实际的PHP页面生成过程。 - **浏览器缓存**:虽然这里提到的主要是服务器端缓存,但类可能也考虑了HTTP头来控制客户端的浏览器缓存,如...
在PHP编程中,运行时缓存是一种优化技术,用于提高应用程序的性能,特别是对于那些频繁执行数据库查询或计算密集型任务的应用程序。ObjectCache,源自WordPress,是PHP中实现的一种对象缓存机制,旨在减少对数据库的...
PHP缓存技术是提高Web应用程序性能的关键策略,它能够减少数据库查询、降低服务器负载并加快页面加载速度。本文将深入探讨PHP缓存的原理、重要性以及如何利用Redis这一高效缓存工具进行优化。 首先,我们需要理解...
例如,通过`ob_start()`开启缓冲区,将整个PHP页面的输出保存到变量中,然后使用`ob_get_contents()`获取缓冲区的内容,最后写入到HTML文件。这样,后续的访问可以直接读取生成的静态HTML,避免了每次请求都执行PHP...
在实际应用中,你可以在每个需要缓存的PHP页面开始处调用 `HtmlCache::startCache()`,在结束处调用 `HtmlCache::endCache('unique_filename')`,其中 'unique_filename' 应该是能够唯一标识这个页面的字符串,例如...
实现PHP页面静态化,通常需要以下步骤: 1. **检测更新**:在生成静态文件之前,检查内容是否已更新。如果内容未变化,直接返回已存在的静态文件。 2. **生成静态文件**:当内容更新时,先执行PHP脚本动态生成HTML...
**缓存的主要目标**是加速页面加载速度,通过存储常用或不变的数据,减少对数据库或其他数据源的重复查询,从而节省计算资源和网络带宽。 #### 二、缓存的基本概念与目的 缓存本质上是一种存储机制,它利用快速...