zoopcommerce / juggernaut
一个PHP缓存模块,包括文件系统、APC和Memcached的适配器。它还包括一些数据库缓存和完整页面缓存的辅助类
1.2.0
2014-04-26 02:29 UTC
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-23 14:24:42 UTC
README
#Juggernaut
简介
Juggernaut是一个超级快速的PHP缓存。它拥有多个存储适配器和一些简单的辅助工具,帮助您快速开启缓存。
此模块最优秀的特性之一是提供洪水保护,不仅在初始缓存创建时(通过排队后续请求)有效,而且在重新缓存时(通过在新的缓存重新创建之前为后续请求提供旧的缓存)也有效。
这两个特性使得Juggernaut在正常使用中至少比Zend Framework 2缓存适配器快100%,在高并发应用中可快至270%
安装
使用Composer将模块安装到您应用程序的vendor目录。将以下行添加到您的composer.json
文件中。
{ "require": { "zoopcommerce/juggernaut": "dev-master" } }
用法
您可以通过直接实例化一个存储适配器并调用set/get来使用Juggernaut。
使用存储适配器进行键值对缓存
文件系统
// you should always store the cache below the web root for security!! $cacheDirectory = __DIR__ . '../cache'; $cache = new Zoop\Juggernaut\Adapter\FileSystem($cacheDirectory); $key = 'yourUniqueKey'; $data = $cache->getItem($key, $success); // check if cache hit/miss if ($success === false) { // cache missed so now we have to execute // some query that takes a long time for($i=0;$i<1000000;$i++) { $data = rand(0, 10000); } //save it to cache $cache->setItem($key, $data); echo $data; } else { // cache hit! echo $data; }
MongoDB
$mongo = new MongoClient('mongodb://username:password@localhost:27017'); $collection = $mongo->selectCollection('Cache'); $cache = new Zoop\Juggernaut\Adapter\MongoDB($collection); $key = 'yourUniqueKey'; $data = $cache->getItem($key, $success); // check if cache hit/miss if ($success === false) { // cache missed so now we have to execute // some query that takes a long time for($i=0;$i<1000000;$i++) { $data = rand(0, 10000); } //save it to cache $cache->setItem($key, $data); echo $data; } else { // cache hit! echo $data; }
Memcached
//coming soon
MySQL
//coming soon
辅助工具
有一些辅助工具可以加速Juggernaut的使用。
完整页面
正如其名所示,"完整页面"辅助工具将直接将渲染的页面存储到缓存中。这会导致页面加载速度非常快。
要使用此脚本,只需将其放置在页面顶部。
$pageTtl = 600; //10 mins $cacheDirectory = __DIR__ . '../cache'; $adapter = new Zoop\Juggernaut\Adapter\FileSystem($cacheDirectory); $pageCache = new Zoop\Juggernaut\Helper\FullPage($adapter, $pageTtl); $pageCache->start();
您可以使用提供的任何适配器来存储完整页面缓存。例如。
$pageTtl = 600; //10 mins $database='MyMongoDb'; $username='mymongouser'; $password='mymongopass'; $adapter = new Zoop\Juggernaut\Adapter\MongoDB($database, $username, $password); $pageCache = new Zoop\Juggernaut\Helper\FullPage($adapter, $pageTtl); $pageCache->start();
由于脚本会在脚本退出后将页面输出自动刷新到缓存适配器,因此不需要手动将渲染的页面保存到缓存中。
数据库
MySQLi
您可以使用mysqli辅助工具自动缓存您的SQL查询。
$cacheDirectory = __DIR__ . '../cache'; $adapter = new Zoop\Juggernaut\Adapter\FileSystem($cacheDirectory); $db = new Zoop\Juggernaut\Helper\Database\Mysqli($cache); $db->connect($host, $username, $passwd, $database); $q="SELECT COUNT(`pageviews`) as 'pageviews' FROM `analytics` GROUP BY `date`"; $r = $db->query($q, 600); //second arg is ttl if($r!==false) { $pageviews = $db->fetchRow($q)['pageviews']; }
如您所见,您无需担心缓存是否存在,因为辅助工具会做所有繁重的工作。
即将推出
- 单元测试
- 工作示例
- MySQL适配器
- Memcached适配器
- MongoDB辅助工具