phpFastCache是一個開源的PHP緩衝庫,只提供一個簡單的PHP檔案,可方便整合到已有項目,支援多種緩衝方法,包括:apc, memcache, memcached, wincache, files, pdo and mpdo。可通過簡單的API來定義緩衝的有效時間。
代碼如下 |
複製代碼 |
<?php // In your config file include("phpfastcache/phpfastcache.php"); phpFastCache::setup("storage","auto");
// phpFastCache support "apc", "memcache", "memcached", "wincache" ,"files", "sqlite" and "xcache" // You don't need to change your code when you change your caching system. Or simple keep it auto $cache = phpFastCache();
// In your Class, Functions, PHP Pages // try to get from Cache first. product_page = YOUR Identity Keyword $products = $cache->get("product_page");
if($products == null) { $products = YOUR DB QUERIES || GET_PRODUCTS_FUNCTION; // set products in to cache in 600 seconds = 10 minutes $cache->set("product_page", $products,600); }
// Output Your Contents $products HERE |
提高cURL和API調用效能
代碼如下 |
複製代碼 |
<?php include("phpfastcache/phpfastcache.php");
$cache = phpFastCache("memcached");
// try to get from Cache first. $results = $cache->get("identity_keyword")
if($results == null) { $results = cURL->get("http://www.youtube.com/api/json/url/keyword/page"); // Write to Cache Save API Calls next time $cache->set("identity_keyword", $results, 3600*24); }
foreach($results as $video) { // Output Your Contents HERE } |
全頁緩衝
代碼如下 |
複製代碼 |
<?php // use Files Cache for Whole Page / Widget
// keyword = Webpage_URL $keyword_webpage = md5($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING']); $html = __c("files")->get($keyword_webpage);
if($html == null) { ob_start(); /* ALL OF YOUR CODE GO HERE RENDER YOUR PAGE, DB QUERY, WHATEVER */
// GET HTML WEBPAGE $html = ob_get_contents(); // Save to Cache 30 minutes __c("files")->set($keyword_webpage,$html, 1800); }
echo $html; |
掛件緩衝
代碼如下 |
複製代碼 |
<?php // use Files Cache for Whole Page / Widget $cache = phpFastCache("files");
$html = $cache->widget_1;
if($html == null) { $html = Render Your Page || Widget || "Hello World"; // Save to Cache 30 minutes $cache->widget_1 = array($html, 1800); }
echo or return your $html; |
同時使用多種緩衝
代碼如下 |
複製代碼 |
<?php // in your config files include("phpfastcache/phpfastcache.php"); // auto | memcache | files ...etc. Will be default for $cache = __c(); phpFastCache::$storage = "auto";
$cache1 = phpFastCache();
$cache2 = __c("memcache"); $server = array(array("127.0.0.1",11211,100), array("128.5.1.3",11215,80)); $cache2->option("server", $server);
$cache3 = new phpFastCache("apc");
// How to Write? $cache1->set("keyword1", "string|number|array|object", 300); $cache2->keyword2 = array("something here", 600); __c()->keyword3 = array("array|object", 3600*24);
// How to Read? $data = $cache1->get("keyword1"); $data = $cache2->keyword2; $data = __c()->keyword3; $data = __c()->get("keyword4");
// Free to Travel between any caching methods
$cache1 = phpFastCache("files"); $cache1->set("keyword1", $value, $time); $cache1->memcache->set("keyword1", $value, $time); $cache1->apc->set("whatever", $value, 300);
$cache2 = __c("apc"); $cache2->keyword1 = array("so cool", 300); $cache2->files->keyword1 = array("Oh yeah!", 600);
$data = __c("memcache")->get("keyword1"); $data = __c("files")->get("keyword2"); $data = __c()->keyword3;
// Multiple ? No Problem
$list = $cache1->getMulti(array("key1","key2","key3")); $cache2->setMulti(array("key1","value1", 300), array("key2","value2", 600), array("key3","value3", 1800), );
$list = $cache1->apc->getMulti(array("key1","key2","key3")); __c()->memcache->getMulti(array("a","b","c"));
// want more? Check out document in source code |