`
漫无目的
  • 浏览: 1860 次
  • 性别: Icon_minigender_1
  • 来自: 金华
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

[原创]基于Kohana v2.3.4的静态缓存类

    博客分类:
  • PHP
阅读更多

因为之前做一个小项目的时候,发现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;
        }
    }
}
?>

 

1
1
分享到:
评论
1 楼 vb2005xu 2010-09-13  
不错,咱俩一个群的,Kohana v3 好用很多啊

相关推荐

    kohana2.3.4帮助文档

    kohana2.3.4帮助文档,稀缺资源,不可错过。官方已没有了。 中文汉化版。

    Kohana v2.2 中文手册.chm

    Kohana v2.2 中文手册.chm

    Kohana v2.2 手册

    Kohana 是一个基于 PHP 的轻量级框架,其v2.2版本是它的一个重要迭代。这个框架以其简洁、安全和高效而闻名,为开发者提供了一个构建动态网站的强大基础。Kohana 使用MVC(Model-View-Controller)设计模式,这使得...

    PHP框架Kohana v3.3.1.zip

    Kohana里的所有类都能自动被框架加载,不需要手动引用。 7、API一致性。类能使用驱动不同的访问不同的协议来保持API的一致性,即使底层发生变化。 8、强大的事件处理机制。Kohana的事件可被动态的添加、替换或删除...

    Kohana_v2.2

    Kohana是PHP5的开发框架,基于MVC架构。MVC将应用逻辑分开,让我们的代码更加干净并且更快的找到bug。 Kohana起源于Codeigniter(CI),CI是EllisLab的开源作品。他们有很多相似的地方,但是Kohana的所有代码是重新...

    基于kohana实现的基础后台管理系统

    《基于Kohana实现的基础后台管理系统详解》 Kohana是一个轻量级、高效的PHP框架,它以其模块化的结构、良好的组织性和强大的安全特性受到许多开发者喜爱。在这个基础后台管理系统中,Kohana被用作核心框架,构建了...

    PHP框架Kohana v3.3.1

    要开始使用Kohana v3.3.1,你需要按照以下步骤操作: 1. 解压下载的`kohana-3.3.1`压缩包到服务器或本地开发环境中。 2. 配置`APPPATH/config/config.php`以设置数据库连接和其他参数。 3. 创建你的第一个控制器,...

    Kohana Docs v2.2.chm

    Kohana Docs v2.2.chm PHP框架chm学习资料

    Kohana v2.2 中文手册

    Kohana中文手册,从菜鸟到高手的过程是艰辛的,你渴望救助。这本教程就是你无言的助手,默默的帮你到永远。 带奋斗一起飞翔,因为有了它,让我拥有理智之思;我才使过去的失误不再重演到今天的影片里;我才能使过去...

    Kohana中文手册

    本手册是针对 Kohana Docs v2.3.4 版本的中文指南,旨在帮助开发者更深入地理解和使用这一框架。 Kohana 框架的核心特性包括: 1. **模块化**:Kohana 使用模块化的结构,允许开发者将应用分解为小块可重用的组件...

    yii2-image, 基于Kohana图像库的图像处理Yii2框架扩展.zip

    yii2-image, 基于Kohana图像库的图像处理Yii2框架扩展 yii2-image简单易用的Yii2框架扩展,使用强大的Kohana图像库进行图像操作。 灵感由老yii扩展 http://www.yiiframework.com/extension/image/ 和Kohana图像库 ...

    kohana一个php框架

    9. **缓存支持**:为了提高性能,Kohana 提供了缓存功能,可以将常用数据存储在内存中,减少数据库查询,提升应用响应速度。 10. **I18N(国际化)与L10N(本地化)**:Kohana 支持多语言,可以轻松地切换应用的...

    Kohana 3.0 Beginner's Guide

    - **静态文件处理**:通过合理配置,Kohana可以有效地处理静态资源,减少服务器负担。 #### 五、总结 《Kohana 3.0 Beginner's Guide》不仅是一本适合初学者入门的书籍,也是一本值得有一定经验的开发者参考的技术...

    kohana3.0 文档资料

    1. **轻量级与高性能**:Kohana 3.0 采用了按需加载机制,只加载实际需要的类和组件,这使得框架非常轻巧且运行速度快。 2. **安全性**:内置了多种安全特性,如 XSS 防护、SQL 注入防护等,帮助开发者构建更安全的...

    PHP开发框架kohana3.3.1在nginx下的伪静态设置例子

    Kohana 是一个基于 Model-View-Controller (MVC) 架构模式的 PHP5 开发框架,它以安全性和简洁的代码为特点。Kohana 3.3.1 版本是一个轻量级且强大的框架,它从 CodeIgniter 框架发展而来,但随着时间的推移,Kohana...

    kohana 3.3.1.zip

    Kohana里的所有类都能自动被框架加载,不需要手动引用。 7、API一致性。类能使用驱动不同的访问不同的协议来保持API的一致性,即使底层发生变化。 8、强大的事件处理机制。Kohana的事件可被动态的添加、替换或删除...

    kohana-douban:Douban API Package (PHP版本) 基于 Kohana 开发 (`master` for v3.0.x `develop` for v3.2.x)

    Douban API Package Module (ONLY for Kohana v3.2) 项目不再维护开发。欢迎 PR,我会尽快合并发布新版本。 Douban API Package 是一个使用 PHP 开发且基于 Kohana v3 开发的一个扩展(Module)。 它对 进行重新封包...

    kohana3.3.1框架教程 -

    Kohana 是一个基于 PHP5 的轻量级框架,遵循 MVC(Model-View-Controller)设计模式,以高安全性和简洁的代码为特点。这个框架强调面向对象编程的严谨性,支持自动加载、重载、接口、抽象类和单一模式等特性,确保了...

    基于PHP的Kohana PHP5框架.zip

    Kohana采用自动加载机制,开发者无需手动引入类文件,只需按照约定的命名规则编写类,系统会自动找到并加载相应的文件,提高了开发效率。 **5. 错误和日志管理** Kohana有完善的错误处理和日志记录功能,可以帮助...

    Kohana CSSCache Module:轻量级且易于使用的 Kohana CSS 缓存模块。-开源

    4. **动态生成的 CSS 文件**:对于那些需要动态生成的 CSS 文件,Kohana CSSCache 会为其添加正确的 .css 扩展名,这使得浏览器能够正确识别和处理这些文件,同时保持了与静态 CSS 文件的兼容性。 5. **开源特性**...

Global site tag (gtag.js) - Google Analytics