`
xhq6632
  • 浏览: 13267 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类

发一个修改过的缓存静态页面的类,包括实例示例。

    博客分类:
  • php
阅读更多
<?php

/*
*	File name:htmlCache.php
*	modified by:xuhongquan
*	Contact:xhq6632@126.com
*	Last modified:2010-7-14
*
*	This file does the following things:
*	-在原来缓存的基本上作了一些修改
*	-保证一定能够缓存成功
*	-这个原本是网上找的一段代码,没有发现出处。修改了一些。重新发出来,供大家使用。
*	-在原程序的基础上增加程序的灵活性。修改一些BUG
* -不需要任何设置即可
*/

header("Content-type: text/html; charset=utf-8");

ob_start();
class HtmlCache{
		var $content = "";
		var $pre = "<?php if(!defined('IN_DISCUZ')) exit('Access Denied');\n?>";
		var $path = "cache";
		var $time = 120;
		var $type = "abcdefg";
		var $fileName = "";
		var $sfileName = "";
		var $url = "";
		var $basepath = "";

 //构造函数
 function ArrCache($path =null,$time =null ,$type =null){
			$this->path = ($path==null||$path=='')?$this->path:$path;
			$this->time = ($time==null||$time=='')?$this->time:$time;
			$this->fileType = ($type==null||$type=='')?$this->type:$type;
			$this->getFile();
			$this->basepath=$_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.$this->path.DIRECTORY_SEPARATOR;
			$this->fileName =$this->basepath.md5($this->url).'.'.$this->fileType;
			$this->sfileName =$this->basepath.$this->url.'.'.$this->fileType;
			if (file_exists($this->fileName) && ((filemtime($this->fileName)+$this->time) > time())) {
					 $fp = fopen($this->fileName,"r");
					 $this->content=rawurldecode(fread($fp,filesize($this->fileName)));
					 fclose($fp);
					 ob_end_flush();
					 return $this->content;
			}
 }

 function getFile($url=null){//取对应的url文件
		if($url==null||$url==''){
					$port=$_SERVER['SERVER_PORT']==80?'':':'.$_SERVER['SERVER_PORT'];
					$this->url='http://'.$_SERVER['SERVER_NAME'].$port.$_SERVER['SCRIPT_NAME'].'?'.$_SERVER['QUERY_STRING'];
		}else{
				$this->url=$url;
		}
 } // end func


 function endCache() {
		$data=ob_get_contents();
		$data=rawurlencode($data);
		$this->writefile($this->fileName, $data);
		ob_end_flush();
 }

 	function writefile($file, $str) {
		if(empty($str)) return false;
		$path=pathinfo($file);
		if($path['dirname']) {
				$this->mkdirs($path['dirname']);
		}
		$fp = fopen($file, 'wb+');
		if ($fp) {
			fwrite($fp, $str);
			fclose($fp);
			return true;
		} else {
			return false;
		}
	}

	function mkdirs($dir, $mode = 0777){
		if (!is_dir($dir)) {
			$this->mkdirs(dirname($dir), $mode);
			return mkdir($dir, $mode);
		}
		return true;
	}
}//end class
?>

 
用法示例

 

/*
*	File name:testHtml.php
*	Create by:xuhongquan
*	Contact:xhq6632@126.com
*	Last modified:2010-7-14
*
*	This file does the following things:
*	-这个文档是对缓存用法示例
*	
*/

header("Content-type: text/html; charset=utf-8");
require_once('htmlCache.php');
$cache = new HtmlCache('cache/html');
$con=$cache->content;
if(!empty($con)){
		echo $con;//直接输出原来缓存的内容。
}else{
/*
这部分原就是你原来的流程,比方,你原来是查询输出之类。
这个函数就相当于把结果页面缓存起来,下次用户访问的时间好用。
*/
		$cache->endCache();
}
?>

 修改天有空了,再完善一下。作一个缓存数据库的。

分享到:
评论
3 楼 xhq6632 2010-10-22  
当然可以用,这个是我们系统正在使用的。
2 楼 xhq6632 2010-07-16  
天梯梦 写道
大哥,好像不能用啊~~

怎么不能用呢。有问题,请留言。
1 楼 天梯梦 2010-07-16  
大哥,好像不能用啊~~

相关推荐

    完整的asp生成静态页面实例

    3. **页面生成逻辑**:实例中可能包含一个或多个ASP文件,这些文件通过读取动态数据,然后利用Response对象的Write方法将HTML代码写入到一个新的静态HTML文件中。这一过程可能涉及循环、条件判断等控制结构。 4. **...

    生成静态页面实例

    在IT行业中,生成静态页面是网站开发中的一个重要环节,它涉及到网页内容的预渲染和缓存,以提高网站的加载速度和用户体验。本实例聚焦于如何通过编程方式自动生成静态HTML页面,帮助开发者理解这一过程。 静态页面...

    一个简易实现ASP.NET网页静态数据Static Data 进行缓存Cache 的程序例子

    在这个名为"LookUpDataCacheExample"的压缩包文件中,很显然包含了一个演示如何将静态数据进行缓存的实例。下面我们将详细讨论ASP.NET中的缓存机制以及如何应用到静态数据上。 ASP.NET 提供了多种缓存策略,包括...

    JSP结合JavaBean生成静态页面示例

    这里定义了一个简单的JavaBean,用于存储中间内容以及输出的静态页面文件名。 2. **模板定义**: ```java private String getHeadStr() { String s = "&lt;!DOCTYPE ...

    自定义分页类+页面静态化+php

    结合自定义分页类和页面静态化,我们可以创建一个高性能的分页系统。在用户浏览分页内容时,服务器会根据当前页码返回对应的静态页面。如果静态页不存在,则先动态生成,再返回给用户。这样既保留了分页的灵活性,又...

    最简单的php生成静态页的类

    4. `_notes`:这可能是一个笔记或说明文件,包含有关如何使用这个类的详细信息,比如配置设置、使用示例等。 5. `bb`:这个文件名不明确,可能是备份文件或临时文件,通常在实际使用中不会直接涉及。 了解了这些...

    php处理静态页面:页面设置缓存时间实例

    在网站开发中,为了提高网站性能和减少服务器负载,经常会采用缓存机制来缓存静态页面,这样可以有效地减少对服务器的请求次数。PHP作为一种广泛使用的后端脚本语言,在处理静态页面和设置页面缓存时间方面提供了...

    Java内部类应用之静态内部类应用示例

    静态内部类是外部类的一个静态成员,因此外部类的所有方法、所有初始化块可以使用静态内部类来定义变量、创建对象。外部类依然不能直接访问静态内部类的成员,但可以使用静态内部类的类名作为调用者来访问静态内部类...

    asp.net生成html静态页面[示例](HtmlPage)

    `HtmlPage`可能是项目中的一个具体类或文件名,它可能包含生成HTML页面的代码。例如,一个简单的`HtmlPage.cshtml`文件可能如下所示: ```csharp @model YourNamespace.Model.YourModel &lt;title&gt;@Model....

    PHP实例开发源码—雨尘SEO静态页面生成系统PHP源码.zip

    5. **缓存管理**:为了提高效率,系统可能会包含一个缓存机制。当内容更新时,只重新生成已更改的页面,而不是整个站点。 6. **配置文件**:项目可能包含配置文件,用于设置数据库连接信息、路径设置、模板目录等。...

    C#静态页面的生成,自己做的,比较简单

    总的来说,这个项目提供了一个基础的C#静态页面生成的示例,可以帮助初学者理解动态网页如何转换为静态HTML,以及如何在C#中实现这一过程。通过学习和交流,开发者可以进一步提升自己的技能,设计出更高效、更优化的...

    ASP.NET页面静态化例子带数据库.rar

    在这个示例中,"ASP.NET页面静态化例子带数据库.rar"很可能包含了一个数据库驱动的静态化实现。它可能包括以下部分: - **数据库脚本**:创建或更新用于存储页面内容的数据库表。 - **ASP.NET Web应用程序**:包含...

    PHP单例模式数据库连接类与页面静态化实现方法

    单例模式的核心在于一个类只能创建一个实例,同时提供一个全局访问这个实例的点。单例模式通常包含以下几个要素: - 私有静态变量,用来存放类的实例。 - 私有构造函数,防止类被外部实例化。 - 公共静态方法,用于...

    php生成静态页面的简单示例

    在本文中,我们主要探讨了如何使用PHP来生成静态页面的一个简单实例。这个示例可以用于新闻发布系统,通过实现新闻页面的静态化,能够有效提高网站的访问速度和安全性。静态页面指的是页面内容不通过数据库动态生成...

    asp伪静态实例演示

    这个"asp伪静态实例演示"是一个具体的示例,帮助开发者理解并实现ASP环境下的伪静态功能。 伪静态技术的主要目的是将动态URL转换为看似静态的URL格式,以利于搜索引擎抓取和用户记忆。在ASP中,这通常通过重写URL...

    php静态文件生成类实例分析_.docx

    这展示了一个简单的缓存策略,避免频繁生成静态文件。 - 使用`ob_start()`开启输出缓冲,然后生成动态内容,接着用`ob_end_clean()`清除缓冲区并将内容保存到变量`$temp`中。最后,将`$temp`的内容写入`./index....

    优秀的设计模式示例-静态代理模式

    在示例代码中,目标对象可能是一个实现了某些功能的服务类。 2. **代理对象(Proxy)**:代理对象与目标对象具有相同的接口,这样在客户端看来,它们都是同一个类型。代理对象在调用目标对象方法之前和之后可以执行...

    ASP.NET-[其他类别]利用handler生成静态页面的完整解决方案v1.1.zip

    这个解决方案v1.1可能包含了一些优化和最佳实践,比如缓存策略、错误处理以及如何处理更新和删除动态内容后静态页面的同步问题。通过解压"ASP.NET-[其他类别]利用handler生成静态页面的完整解决方案 v1.1_handler....

    jsp 生成 HTML 静态页实例

    在描述中的“小例子”可能包含一个简单的JSP文件,它可能如下所示: ```jsp ; charset=UTF-8" pageEncoding="UTF-8"%&gt; &lt;!DOCTYPE html&gt; &lt;title&gt;JSP生成HTML示例 欢迎访问! 当前时间是:() %&gt; ``` 这个例子...

Global site tag (gtag.js) - Google Analytics