上周基本无事,所以上班时间偷空把 DsCache 进化成加强版 2.0.r31. 这次主要加入了生成静态HTML 和 Memcached 内存缓存 这俩小崽子, 不错不错, 无痛转换缓存方式.
DsCache 主页: http://code.google.com/p/dscache/
2.0.r31 版源码: http://dscache.googlecode.com/files/DsCache_2.0.r31.tar.gz
使用举例:(源码目录下 test2)
1. 文件缓存
1 <?php
2 /**
3 * 测试文件缓存
4 *
5 * @filesource testFileCache.php
6 * @package DsCache
7 * @subpackage test2
8 * @version $id: 0.1, utf8, Sat Dec 19 23:18:06 CST 2009
9 * @author LD King <kldscs[at]gmail.com>
10 * @copyright Copyleft (D.) 2007 – 2009 MiFunny China Inc.
11 * @link http://mifunny.info/
12 * @example
13 *
14 */
15 require_once ’../Cache.class.php‘;
16
17 //注: 文件缓存支持所有变量, 不包括对象(拖慢速度)
18 $_config['DsCache'] = array(
19 ’cache_dir‘ => dirname(__FILE__).‘/tmp‘, //缓存目录(必须),最好用绝对路径
20 ’life_time‘ => 900, //全局缓存时间, 默认15min
21 ’encoding_filename‘ => true, //用 md5 加密文件名, 默认打开
22 ’cache_dir_umask‘ => 0755, //建立子目录时的默认权限
23 );
24 $date = "cache time: ".date(‘Y-m-d H:m:s‘);
25
26 //获得缓存
27 //缓存 key 可以多级目录(避免单目录文件超过1k),
28 // 该缓存零时文件的路径为: tmp/cache/key/DsCache_{md5值}.php
29 if( $c = Cache::get(‘cache/key/date‘) ){
30 echo "{$c}<br/>\t\nNow: ".date(‘Y-m-d H:m:s‘);
31 }else{
32 echo "<br/>\t\nCache Failed!";
33
34 //设置缓存, 参数: 缓存唯一标识, 数据, 缓存时间
35 // 约定: 如果 ‘life_time’ 设置为 0 表示不检查缓存有效期(即缓存永久有效).
36 Cache::set(‘cache/key/date‘, $date, 15);
37 }
38
39 //清除特定缓存
40 //Cache::remove(‘cache/key/date’);
41
42 //清空缓存目录
43 //Cache::clean();
44
45
46 ?>
2. 生成静态HTML
1 <?php
2 /**
3 * 测试生成静态HTML文件
4 *
5 * @filesource testHtmlCache.php
6 * @package DsCache
7 * @subpackage test2
8 * @version $id: 0.1, utf8, Sat Dec 19 23:47:21 CST 2009
9 * @author LD King <kldscs[at]gmail.com>
10 * @copyright Copyleft (D.) 2007 – 2009 MiFunny China Inc.
11 * @link http://mifunny.info/
12 * @example
13 *
14 */
15
16 require_once ’../Cache.class.php‘;
17 require_once ’../ob_html_cache.func.php‘;
18
19 $_config['DsCache'] = array(
20 ’cache_type‘ => ’htmlfile‘, //缓存方式(必须), htmlfile 这个模块只能保存字符串,但文件操作最快
21 ’cache_dir‘ => dirname(__FILE__).‘/tmp‘, //缓存目录(必须)
22 ’cache_dir_umask‘ => 0777, //子目录权限
23 ’life_time‘ => 900, //全局缓存时间 900s.
24 ’gizp‘ => true, //使用gzip压缩输出页面
25 );
26
27 //调用 ob_cache 函数
28 // 函数自动运行: 第一次载入,缓存当前页; 第二次载入,显示缓存并中断程序;
29 ob_cache();
30 // 缓存显示最后会加上 <!– DsCached –>
31
32 date_default_timezone_set(‘UTC‘);
33 echo "What is the time? Oh~~ ".date("D M j G:i:s T Y");
34
35 ?>
3. 内存缓存 Memcached
1 <?php
2 /**
3 * 测试 Memcached 内存缓存
4 *
5 * @filesource testMemcached.php
6 * @package DsCache
7 * @subpackage test2
8 * @version $id: 0.1, utf8, Sun Dec 20 00:06:50 CST 2009
9 * @author LD King <kldscs[at]gmail.com>
10 * @copyright Copyleft (D.) 2007 – 2009 MiFunny China Inc.
11 * @link http://mifunny.info/
12 * @example
13 *
14 */
15 require_once ’../Cache.class.php‘;
16
17 //php-memcached主页: http://pecl.php.net/package/memcached
18 //注: 内存缓存支持所有变量, 也包括对象
19 $_config['DsCache'] = array(
20 ’cache_type‘ => ’phpmemcached‘, //缓存类型(必须)
21 ’servers‘ => array(
22 array(‘host‘=>‘127.0.0.1‘, ’port‘=>‘11211‘, ’weight‘=>99),
23 ), //服务器列表(必须)
24 ’life_time‘ => 900, //全局缓存时间, 默认15min
25 ’persistent‘ => true, //持久连接
26 ’compredded‘ => false, //压缩数据
27 ’encoding_key‘ => false, //加密 key,默认false
28 );
29 $date = "cache time: ".date(‘Y-m-d H:m:s‘);
30 //var_dump( $_config );
31 //获得缓存
32 if( $c = Cache::get(‘cache_key_date‘) ){
33 echo "{$c}<br/>\t\nNow: ".date(‘Y-m-d H:m:s‘);
34 }else{
35 echo "<br/>\t\nCache Failed!";
36
37 //设置缓存, 参数: 缓存唯一标识, 数据, 缓存时间
38 // 约定: 如果 ‘life_time’ 设置为 0 表示不检查缓存有效期(即缓存永久有效).
39 Cache::set(‘cache_key_date‘, $date, 15);
40 }
41
42 //清除特定缓存
43 //Cache::remove(‘cache_key_date’);
44
45 //清空缓存
46 //Cache::clean();
47
48 ?>
最新评论