<?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. **页面生成逻辑**:实例中可能包含一个或多个ASP文件,这些文件通过读取动态数据,然后利用Response对象的Write方法将HTML代码写入到一个新的静态HTML文件中。这一过程可能涉及循环、条件判断等控制结构。 4. **...
在IT行业中,生成静态页面是网站开发中的一个重要环节,它涉及到网页内容的预渲染和缓存,以提高网站的加载速度和用户体验。本实例聚焦于如何通过编程方式自动生成静态HTML页面,帮助开发者理解这一过程。 静态页面...
在这个名为"LookUpDataCacheExample"的压缩包文件中,很显然包含了一个演示如何将静态数据进行缓存的实例。下面我们将详细讨论ASP.NET中的缓存机制以及如何应用到静态数据上。 ASP.NET 提供了多种缓存策略,包括...
这里定义了一个简单的JavaBean,用于存储中间内容以及输出的静态页面文件名。 2. **模板定义**: ```java private String getHeadStr() { String s = "<!DOCTYPE ...
结合自定义分页类和页面静态化,我们可以创建一个高性能的分页系统。在用户浏览分页内容时,服务器会根据当前页码返回对应的静态页面。如果静态页不存在,则先动态生成,再返回给用户。这样既保留了分页的灵活性,又...
4. `_notes`:这可能是一个笔记或说明文件,包含有关如何使用这个类的详细信息,比如配置设置、使用示例等。 5. `bb`:这个文件名不明确,可能是备份文件或临时文件,通常在实际使用中不会直接涉及。 了解了这些...
在网站开发中,为了提高网站性能和减少服务器负载,经常会采用缓存机制来缓存静态页面,这样可以有效地减少对服务器的请求次数。PHP作为一种广泛使用的后端脚本语言,在处理静态页面和设置页面缓存时间方面提供了...
静态内部类是外部类的一个静态成员,因此外部类的所有方法、所有初始化块可以使用静态内部类来定义变量、创建对象。外部类依然不能直接访问静态内部类的成员,但可以使用静态内部类的类名作为调用者来访问静态内部类...
`HtmlPage`可能是项目中的一个具体类或文件名,它可能包含生成HTML页面的代码。例如,一个简单的`HtmlPage.cshtml`文件可能如下所示: ```csharp @model YourNamespace.Model.YourModel <title>@Model....
5. **缓存管理**:为了提高效率,系统可能会包含一个缓存机制。当内容更新时,只重新生成已更改的页面,而不是整个站点。 6. **配置文件**:项目可能包含配置文件,用于设置数据库连接信息、路径设置、模板目录等。...
总的来说,这个项目提供了一个基础的C#静态页面生成的示例,可以帮助初学者理解动态网页如何转换为静态HTML,以及如何在C#中实现这一过程。通过学习和交流,开发者可以进一步提升自己的技能,设计出更高效、更优化的...
在这个示例中,"ASP.NET页面静态化例子带数据库.rar"很可能包含了一个数据库驱动的静态化实现。它可能包括以下部分: - **数据库脚本**:创建或更新用于存储页面内容的数据库表。 - **ASP.NET Web应用程序**:包含...
单例模式的核心在于一个类只能创建一个实例,同时提供一个全局访问这个实例的点。单例模式通常包含以下几个要素: - 私有静态变量,用来存放类的实例。 - 私有构造函数,防止类被外部实例化。 - 公共静态方法,用于...
在本文中,我们主要探讨了如何使用PHP来生成静态页面的一个简单实例。这个示例可以用于新闻发布系统,通过实现新闻页面的静态化,能够有效提高网站的访问速度和安全性。静态页面指的是页面内容不通过数据库动态生成...
这个"asp伪静态实例演示"是一个具体的示例,帮助开发者理解并实现ASP环境下的伪静态功能。 伪静态技术的主要目的是将动态URL转换为看似静态的URL格式,以利于搜索引擎抓取和用户记忆。在ASP中,这通常通过重写URL...
这展示了一个简单的缓存策略,避免频繁生成静态文件。 - 使用`ob_start()`开启输出缓冲,然后生成动态内容,接着用`ob_end_clean()`清除缓冲区并将内容保存到变量`$temp`中。最后,将`$temp`的内容写入`./index....
在示例代码中,目标对象可能是一个实现了某些功能的服务类。 2. **代理对象(Proxy)**:代理对象与目标对象具有相同的接口,这样在客户端看来,它们都是同一个类型。代理对象在调用目标对象方法之前和之后可以执行...
这个解决方案v1.1可能包含了一些优化和最佳实践,比如缓存策略、错误处理以及如何处理更新和删除动态内容后静态页面的同步问题。通过解压"ASP.NET-[其他类别]利用handler生成静态页面的完整解决方案 v1.1_handler....
在描述中的“小例子”可能包含一个简单的JSP文件,它可能如下所示: ```jsp ; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <title>JSP生成HTML示例 欢迎访问! 当前时间是:() %> ``` 这个例子...