phpFastCache — PHP библиотека для кэширования

Вступление

Я один из тех людей, которые любят предупреждать проблему, нежели решать ее, потому что это менее проблематично. В свободное время я пишу свою CMS и каждый раз стараюсь использовать новые конфетки. На днях на меня напала напасть о том, что кэширования в моей малышке нет. Что это такое и какие преимущества оно дает, думаю, никому объяснять не стоит. Так как пока я познаю азы, для меня предпочтительнее выглядят готовые php-библиотеки. Сегодня я расскажу вам о моем опыте использования phpFastCache (open source PHP-библиотека для кэширования) и о том, что эта библиотека помогла ускорить мой проект в два раза.

Немного о библиотеке

phpFastCache — 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» и начал следить. Сказать, что результатами я был более, чем доволен — сказать ничего. Ниже приведена статистика по времени загрузки трех разных новостей до использования кэширования и после. Показ полных новостей ускорился почти в два раза!

До

1bb9055721d0065073f08f7e0b152acc

После

1eaf5f5823de162abc14b46d7a15b9bb

Да, более глубокие исследование я просто не в силах провести. Но отбрасывая скорость загрузки страницы и другие факторы, можно утверждать, что в целом библиотека неплоха!

Выводы

В наше время пренебрегать кэшированием не стоит. Используя кэширования мы получаем несомненные плюсы. Библиотека phpFastCache является разумным решением для тех, кто впервые знакомится с такой плюшкой. Или даже для тех, кто давно использует свои наработки/прочие классы и библиотеки для кэширования.

Автор приглашает Вас принять участие в обновлении phpFastCache:
GitHub репозиторий: github.com/khoaofgod/phpfastcache

p.s. Надеюсь моя первая статья будет полезна и информативна. Ошибки в статье высылайте мне в лс, буду благодарен за помощь.