因为之前做一个小项目的时候,发现Kohana貌似没有静态缓存类或库,或我没找到...
于是自己写了一个,只在v2.3.4内测试过,v3请自测或改装
东西是很简单的东西,还是有改进的余地,各位看官自改吧.
<?php
/**
* @name Page Cache 页面缓存类库
* @access public
* @author 漫无目的(soyota@gmail.com)
* @version v0.1.1 alpha
* ================
* 缓存打开时,构造方法会尝试获取缓存,并输出,否则不缓存
* 使用方法:
* 1.打开 application/config/pagecache.php 进行配置
* 2.在controller构造方法内实例本类
* 3.在controller内的function内部*末尾*,增加:$this->template->render(TRUE);\n$this->pageCache->endCache();
*
* 变更为单例模式,增加单独controller缓存功能
* $this->pageCache = PageCache::Init(TRUE); //参数留空表示本controller不需要缓存
*
* 注:application/pageCache目录请设置为755权限
*
*/
ob_start();
class PageCache_Core {
protected $cache_dir; // 缓存目录
protected $lifeTime; // 缓存过期时间
protected $file; // 缓存目录和缓存文件(URI加MD5后)
public $pageCache_open; // 缓存开关
private static $_init;
private function __construct($isOpen = FALSE) {
$this->pageCache_open = ($isOpen) ? $isOpen : Kohana::config('pagecache.pageCache_open');
$this->cache_dir = Kohana::config('pagecache.pageCache_dir');
$this->lifeTime = Kohana::config('pagecache.pageCache_lifeTime') * 3600;
$this->file = $this->cache_dir . md5(urlencode(url::current()));
if($this->pageCache_open) {
$this->_start();
}
}
public static function Init($isOpen = FALSE) {
if(!self::$_init) {
self::$_init = new PageCache_Core($isOpen);
}
return self::$_init;
}
/**
* 缓存动作开始:检测缓存
* @access private
*/
private function _start() {
// 如果缓存文件存在,且存活时间未过期。**不需要更新缓存,直接输入缓存**
if(file_exists($this->file) AND (filemtime($this->file) + $this->lifeTime) > time()) {
$this->_getCache();
}
}
/**
* 将数据写入缓存数据
* @access private
*/
private function _setCache($pageData) {
if(file_put_contents($this->file, $pageData, LOCK_EX)) {
return true;
} else {
return false;
}
}
/**
* 获取缓存数据
* @access private
*/
private function _getCache() {
$data = file_get_contents($this->file);
if($data) {
echo $data;
} else {
$this->_ERROR('无法获取缓存数据');
}
ob_end_flush();
exit();
}
/**
* 本方法应该放置在代码末尾,使其设置缓存并显示
*/
public function endCache() {
if($this->pageCache_open) {
$pageData = ob_get_contents();
$this->_setCache($pageData);
ob_end_flush();
exit();
} else { // 缓存关闭
ob_end_flush();
exit();
}
}
/**
* 异常抛出
* @access private
* @param string $errMSG
* @return void
*/
private function _ERROR($errMSG) {
if(is_string($errMSG)) {
echo '发生错误:' . $errMSG;
}
}
}
?>
分享到:
相关推荐
kohana2.3.4帮助文档,稀缺资源,不可错过。官方已没有了。 中文汉化版。
Kohana v2.2 中文手册.chm
Kohana 是一个基于 PHP 的轻量级框架,其v2.2版本是它的一个重要迭代。这个框架以其简洁、安全和高效而闻名,为开发者提供了一个构建动态网站的强大基础。Kohana 使用MVC(Model-View-Controller)设计模式,这使得...
Kohana里的所有类都能自动被框架加载,不需要手动引用。 7、API一致性。类能使用驱动不同的访问不同的协议来保持API的一致性,即使底层发生变化。 8、强大的事件处理机制。Kohana的事件可被动态的添加、替换或删除...
Kohana是PHP5的开发框架,基于MVC架构。MVC将应用逻辑分开,让我们的代码更加干净并且更快的找到bug。 Kohana起源于Codeigniter(CI),CI是EllisLab的开源作品。他们有很多相似的地方,但是Kohana的所有代码是重新...
《基于Kohana实现的基础后台管理系统详解》 Kohana是一个轻量级、高效的PHP框架,它以其模块化的结构、良好的组织性和强大的安全特性受到许多开发者喜爱。在这个基础后台管理系统中,Kohana被用作核心框架,构建了...
要开始使用Kohana v3.3.1,你需要按照以下步骤操作: 1. 解压下载的`kohana-3.3.1`压缩包到服务器或本地开发环境中。 2. 配置`APPPATH/config/config.php`以设置数据库连接和其他参数。 3. 创建你的第一个控制器,...
Kohana Docs v2.2.chm PHP框架chm学习资料
Kohana中文手册,从菜鸟到高手的过程是艰辛的,你渴望救助。这本教程就是你无言的助手,默默的帮你到永远。 带奋斗一起飞翔,因为有了它,让我拥有理智之思;我才使过去的失误不再重演到今天的影片里;我才能使过去...
本手册是针对 Kohana Docs v2.3.4 版本的中文指南,旨在帮助开发者更深入地理解和使用这一框架。 Kohana 框架的核心特性包括: 1. **模块化**:Kohana 使用模块化的结构,允许开发者将应用分解为小块可重用的组件...
yii2-image, 基于Kohana图像库的图像处理Yii2框架扩展 yii2-image简单易用的Yii2框架扩展,使用强大的Kohana图像库进行图像操作。 灵感由老yii扩展 http://www.yiiframework.com/extension/image/ 和Kohana图像库 ...
9. **缓存支持**:为了提高性能,Kohana 提供了缓存功能,可以将常用数据存储在内存中,减少数据库查询,提升应用响应速度。 10. **I18N(国际化)与L10N(本地化)**:Kohana 支持多语言,可以轻松地切换应用的...
- **静态文件处理**:通过合理配置,Kohana可以有效地处理静态资源,减少服务器负担。 #### 五、总结 《Kohana 3.0 Beginner's Guide》不仅是一本适合初学者入门的书籍,也是一本值得有一定经验的开发者参考的技术...
1. **轻量级与高性能**:Kohana 3.0 采用了按需加载机制,只加载实际需要的类和组件,这使得框架非常轻巧且运行速度快。 2. **安全性**:内置了多种安全特性,如 XSS 防护、SQL 注入防护等,帮助开发者构建更安全的...
Kohana 是一个基于 Model-View-Controller (MVC) 架构模式的 PHP5 开发框架,它以安全性和简洁的代码为特点。Kohana 3.3.1 版本是一个轻量级且强大的框架,它从 CodeIgniter 框架发展而来,但随着时间的推移,Kohana...
Kohana里的所有类都能自动被框架加载,不需要手动引用。 7、API一致性。类能使用驱动不同的访问不同的协议来保持API的一致性,即使底层发生变化。 8、强大的事件处理机制。Kohana的事件可被动态的添加、替换或删除...
Douban API Package Module (ONLY for Kohana v3.2) 项目不再维护开发。欢迎 PR,我会尽快合并发布新版本。 Douban API Package 是一个使用 PHP 开发且基于 Kohana v3 开发的一个扩展(Module)。 它对 进行重新封包...
Kohana 是一个基于 PHP5 的轻量级框架,遵循 MVC(Model-View-Controller)设计模式,以高安全性和简洁的代码为特点。这个框架强调面向对象编程的严谨性,支持自动加载、重载、接口、抽象类和单一模式等特性,确保了...
Kohana采用自动加载机制,开发者无需手动引入类文件,只需按照约定的命名规则编写类,系统会自动找到并加载相应的文件,提高了开发效率。 **5. 错误和日志管理** Kohana有完善的错误处理和日志记录功能,可以帮助...
4. **动态生成的 CSS 文件**:对于那些需要动态生成的 CSS 文件,Kohana CSSCache 会为其添加正确的 .css 扩展名,这使得浏览器能够正确识别和处理这些文件,同时保持了与静态 CSS 文件的兼容性。 5. **开源特性**...