thinkphp 删除所有缓存 Rumtime 以及 Html 静态缓存

<?php
/**
 * This is not a free software, All Copyright @F.Z.B
 * Date: 14-8-12 下午4:08
 * File: CacheController.class.php
 * Author: [email protected]
 */

namespace Api\Controller;

class CacheController extends InitController
{
    public function cleanAll()
    {
        $this->totalSize = 0;
        $this->totalFile = 0;
        $GLOBALS[‘arrFiles‘] = $GLOBALS[‘arrDirs‘] = array();

        $this->dropDir(HTML_PATH);
        $this->dropDir(RUNTIME_PATH);

        //ThinkPHP 3.2 不会自动生成Html缓存目录
        if (!is_dir(HTML_PATH)) mkdir(HTML_PATH);

        $data = array(
            ‘totalFile‘ => $this->totalFile,
            ‘totalSize‘ => byte_format($this->totalSize),
            ‘arrFiles‘  => $GLOBALS[‘arrFiles‘],
            ‘arrDirs‘   => $GLOBALS[‘arrDirs‘],
            ‘result‘    => 1,
            ‘reqtime‘   => date(‘Y-m-d H:i:s‘),
        );

        $returnType = I(‘type‘) == ‘JSON‘ ? ‘JSON‘ : ‘JSONP‘;
        $this->ajaxReturn($data, $returnType);

    }

    public function dropDir($path = ‘‘)
    {
        $path = trimRepeatSlash($path);
        if (is_file($path)) {
            $this->totalSize += filesize($path);
            $this->totalFile++;
            $GLOBALS[‘arrFiles‘][] = $path;
            unlink($path);

        } else if (is_dir($path)) {
            if (($dir = opendir($path)) !== false) {
                while (($file = readdir($dir)) !== false) {
                    if ($file != ‘.‘ && $file != ‘..‘) {
                        $this->dropDir($path . ‘/‘ . $file);
                    }
                }

                $GLOBALS[‘arrDirs‘][] = $path;
                rmdir($path);
            }
        }
    }
}

#thinkphp3.2.x设置缓存开启#
<?php
return array(
    //‘配置项‘=>‘配置值‘
    ‘LAYOUT_ON‘        => true,
    ‘HTML_CACHE_ON‘    => strpos($_SERVER[‘HTTP_HOST‘], ‘.‘) !== false, // 开启静态缓存 默认为 true 本地不开启
    ‘HTML_CACHE_TIME‘  => 3600, // 全局静态缓存有效期(秒)
    ‘HTML_FILE_SUFFIX‘ => ‘.shtml‘, // 设置静态缓存文件后缀
    ‘HTML_CACHE_RULES‘ => array(
        ‘*‘ => array(‘{:module}/{:controller}/{:action}/{$_SERVER.REQUEST_URI|md5}‘, 3600, ‘trimSW‘),
    )
);

#trimSW函数#

/**
 * @author      [email protected]
 * @description 去除 空格 和非\w 字符串,用于cache 配置
 *
 * @param        $str
 * @param string $emptyValue
 *
 * @return mixed|string
 */
function trimSW($str, $emptyValue = ‘_empty_‘)
{
    $str = preg_replace(‘/([^\w\/]+)/‘, ‘-‘, $str);
    if (empty($str)) {
        $str = $emptyValue;
    }

    return $str;
}
时间: 2024-10-28 15:01:33

thinkphp 删除所有缓存 Rumtime 以及 Html 静态缓存的相关文章

ThinkPHP 3.2.3 数据缓存与静态缓存

ThinkPHP 3.2.3 中手册中数据缓存的地址是:http://www.kancloud.cn/manual/thinkphp/1835 静态缓存的地址是:http://www.kancloud.cn/manual/thinkphp/1839 数据缓存 使用 S 方法进行数据缓存,缓存文件默认的方式是文件缓存(DATA_CACHE_TYPE = File),文件缓存默认的保存路径是 ./Application/Runtime/Temp 当使用默认的缓存方式时,不需要在配置文件中进行配置,直

thinkphp的静态缓存,数据缓存,快速缓存,查询缓存

// 静态缓存 // 'HTML_PATH' 缓存目录,这是个常量不是配置项,在入口文件中定义 // 'HTML_CACHE_ON'     =>    true, // 开启静态缓存 'HTML_CACHE_TIME'   =>    3600, // 全局静态缓存有效期(秒) 'HTML_FILE_SUFFIX'  =>    '.html', // 设置静态缓存文件后缀 'HTML_CACHE_RULES'  =>     array( // 定义静态缓存规则 // 定义整个

thinkphp3.2开启静态缓存与缓存规则设置

网站的静态缓存对大访问量有很好的缓解作用,尤其对网站的大并发,可有效的缓解数据库的压力.在thinkphp中实现静态缓存很简单,thinkphp都已经封装好了直接调用即可. 静态缓存   首先设置 HTML_PATH 静态缓存文件目录,默认是在项目的应用目录下如:App/Html 在前台或后台打开静态缓存 1 'HTML_CACHE_ON'     =>    true,     // 开启静态缓存 3.设置静态缓存时间 1 'HTML_CACHE_TIME'   =>    3600,   

thinkphp的静态缓存禁止

最近用Thinkphp做的企业站,thinkphp里面内置了一个静态缓存功能各种厉害缓存,挥之不去.既然现在还用不上静态缓存功能,就想想怎么禁止缓存.为了这缓存,把它的核心库都看了一些.网上有很多讲解缓存机制的原理和用法,就是没有讲怎么禁止的.这记录分享下,有用时以便查阅. ThinkPHP在数据缓存方面包括文件方式.共享内存方式和数据库方式在内的多种方式进行缓存,通过插件方式还可以增加以后需要的缓存类,让应用开发可以选择更加适合自己的缓存方式,从而有效地提高应用执行效率.目前已经支持的缓存方式

Thinkphp 缓存和静态缓存局部缓存设置

1.S方法缓存设置 if(!$rows = S('indexBlog')){ //*$rows = S('indexBlog') $rows = D('blog')->select(); S('indexBlog',$rows,10); } $this->assign('rows',$rows); //$rows = S('indexBlog') $this->display(); 2.静态缓存 3.局部缓存

apache用户认证和静态缓存疑惑

apache配置用户认证后 <Directory /data/www/abc> AllowOverride AuthConfig AuthName "z" AuthType Basic AuthUserFile /data/.htpasswd require valid-user </Directory> 第一次访问需要认证,然后清除浏览器缓存,第二次在访问该目录时,不需要认证.可是已经清除缓存了,为什么不需要认证就可以访问文件呢? apache配置静态缓存后

浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)

系统默认的缓存方式是采用File方式缓存,我们可以在项目配置文件里面定义其他的缓存方式,例如,修改默认的缓存方式为Xcache(当然,你的环境需要支持Xcache) 对于File方式缓存下的缓存目录下面因为缓存数据过多而导致存在大量的文件问题,ThinkPHP也给出了解决方案,可以启用哈希子目录缓存的方式. 'DATA_CACHE_SUBDIR'=>true 还可以设置哈希目录的层次,例如 'DATA_PATH_LEVEL'=>2 就可以根据缓存标识的哈希自动创建多层子目录来缓存. S方法支持

小蚂蚁学习APP接口开发(4)—— 静态缓存的操作方法和定时任务

静态缓存的操作 这个之前写的页面静态化有异曲同工之妙,无非就是获取数据.写入数据.读出数据则几个动作.例子中写了一个方法,通过对参数的判断,可以对静态缓存文件进行生成.修改和删除,比较容易操作. <?php class File{ //缓存文件的路径 private $_dir; //缓存文件的默认路径 const EXT='.txt'; //构造方法生成目录 function __construct(){ $this->_dir = dirname(__FILE__).'/files/';

thinkphp3.2局部不缓存的静态缓存

在thinkphp中,对于访问量大的网站可以用静态缓存来越过数据库瓶颈来提高访问速度,但有时候并不是整个页面都要缓存的,如登录的用户名部分,那么如何实现局部不缓存呢? 其实有多种方法,但对于ThinkPHP来说 使用ajax是最好不过了,由于项目不同我只能说一下思路了. 只要在需要的页面加上js代码就可以了, 如用户登录的用户名不需要缓存,那就用js读取Cookie中的用户名和密码,用ajax请求登录, 如果正确返回登录状态,并用js的DOM操作替换相关HTML,然后就实现局部不缓存的效果了.