Вступление
Я один из тех людей, которые любят предупреждать проблему, нежели решать ее, потому что это менее проблематично. В свободное время я пишу свою CMS и каждый раз стараюсь использовать новые конфетки. На днях на меня напала напасть о том, что кэширования в моей малышке нет. Что это такое и какие преимущества оно дает, думаю, никому объяснять не стоит. Так как пока я познаю азы, для меня предпочтительнее выглядят готовые php-библиотеки. Сегодня я расскажу вам о моем опыте использования phpFastCache (open source PHP-библиотека для кэширования) и о том, что эта библиотека помогла ускорить мой проект в два раза.
Немного о библиотеке
phpFastCache — это высоко-производительная система кэширования, предназначенная для ускорения динамических веб-приложений путем снижения нагрузки на базу данных.
Отцом этого детища является Khoa Bui, проживающий в Калифорнии. Первую версию phpFastCache он выпустил 1 января 2011 года. С тех пор поддерживает проект и вносит исправления (последний апдейт 26 июня 2013 года).
Имеется поддержка многих методов кэширования (APC, MemCached, MemCache, Files, PDO и WinCache), а период кэширования можно выставить самому. Все, что вам потребуется это PHP 5.1+.
Как использовать FastCache
Приведу маленький пример с моими комментариями в коде.
<?php
// Подключаем библиотеку
include("php_fast_cache.php");
// Выбор метода кэширования
// phpFastCache поддерживает "apc", "memcache", "memcached", "wincache" ,"files", "pdo", "mpdo" и "xcache"
// Вы не должны делать большие правки кода, когда вы меняете вашу систему кэширования. Вы даже можете просто выставить в свойствах "auto"
phpFastCache::$storage = "auto";
// Инициализация данных
// попробуем получить кэш, если он имеется
$products = phpFastCache::get("products_page");
if($products == null) {
$products = YOUR DB QUERIES || GET_PRODUCTS_FUNCTION;
// отсылаем наш запрос в кеш, 600 = 10 минут
phpFastCache::set("products_page",$products,600);
}
foreach($products as $product) {
// Получившийся ваш контент
}
?>
Итак, что мы имеем:
$data = phpFastCache::get("keyword")
— возвращает нам объект в кэше или NULL.
phpFastCache::set("keyword",$object,600)
— мы отправляем объект в кэш, задаем время хранения.
phpFastCache::set("keyword",$object,600,true)
— добавим «true» и тогда кэширование не будет производиться, если кэш уже имеется. Также возвращает «true» или «false».
Все это всего лишь малая часть того, что умеет phpFastCache.
Более подробно вы можете ознакомиться с этим проектом на www.phpfastcache.com.
Как это работает
Для начала я решил протестировать маленькую часть. Поставил кэширование на показ полной новости. Выставил метод определения кэширования «auto» и начал следить. Сказать, что результатами я был более, чем доволен — сказать ничего. Ниже приведена статистика по времени загрузки трех разных новостей до использования кэширования и после. Показ полных новостей ускорился почти в два раза!
До
После
Да, более глубокие исследование я просто не в силах провести. Но отбрасывая скорость загрузки страницы и другие факторы, можно утверждать, что в целом библиотека неплоха!
Выводы
В наше время пренебрегать кэшированием не стоит. Используя кэширования мы получаем несомненные плюсы. Библиотека phpFastCache является разумным решением для тех, кто впервые знакомится с такой плюшкой. Или даже для тех, кто давно использует свои наработки/прочие классы и библиотеки для кэширования.
Автор приглашает Вас принять участие в обновлении phpFastCache:
GitHub репозиторий: github.com/khoaofgod/phpfastcache
p.s. Надеюсь моя первая статья будет полезна и информативна. Ошибки в статье высылайте мне в лс, буду благодарен за помощь.
Автор: arelay