[Перевод] Использование PhpFastCache для повышения производительности сайта

Redis задняя часть PHP Программа перевода самородков

В этой статье вы познакомитесь с библиотекой PhpFastCache для реализации функций кэширования для вашего PHP-приложения. Благодаря функции кэширования можно повысить общую производительность веб-сайта и скорость загрузки страниц.

Что такое PhpFastCache?

PhpFastCache — это библиотека, позволяющая легко реализовать функции кэширования в приложениях PHP. Он мощный, но простой в использовании и предоставляет несколько API-интерфейсов для безболезненной реализации стратегий кэширования.

PhpFastCache не является чисто традиционным кешем в стиле файловой системы. Он поддерживает различные файловые адаптеры (Files Adapter), что позволяет вам выбирать высокопроизводительные серверные службы, такие как Memcache, Redis, MongoDB и CouchDB.

Начнем с обзора самых популярных адаптеров:

  • Файловая система
  • Memcache, Redis и APC
  • CouchDB и MongoDB
  • Zend Disk Cache и Zend Memory Cache

Если используемого вами файлового адаптера нет в списке выше, вы можете просто разработать собственный драйвер, подключить его к системе, и он будет работать так же эффективно.

В дополнение к основным функциям PhpFastCache также предоставляет механизм событий, который позволяет вам реагировать на предопределенные события. Например, когда что-то удаляется из кеша, вы можете получить это событие и обновить или удалить связанные данные.

В следующих главах мы будем использовать несколько примеров, чтобы понять, как установить и настроить PhpFastCache.

установка и настройка

В этом разделе мы узнаем, как установить и настроить PhpFastCache. Вот несколько способов интегрировать его в свой проект.

Если вы сочтете это хлопотным, просто подготовьтесь к загрузке этой библиотеки..zipили.tar.gzфайл, вы можете перейти кОфициальный сайтСкачать.

Или вы можете установить его как пакет Composer. Этот способ лучше, потому что будет удобнее для последующего обслуживания и апгрейда. Если вы не установили Composer, вам необходимо сначала установить его.

После установки Composer вы можете загрузить PhpFastCache с помощью следующей команды:

$composer require phpfastcache/phpfastcache

После выполнения команды вы получите каталог поставщика, содержащий все файлы, необходимые для PhpFastCache. Кроме того, если вам не хватает библиотеки или плагина, от которого зависит PhpFastCache, Composer напомнит вам сначала установить зависимость.

вам нужно найтиcomposer.jsonфайл, это выглядит так:

{
    "require": {
        "phpfastcache/phpfastcache": "^6.1"
    }
}

Независимо от того, как вы установили PhpFastCache, включите его в свое приложение.autoload.phpдокумент.

Если вы используете рабочий процесс на основе Composer,autoload.phpфайл будет вvendorв каталоге.

// Include composer autoloader
require '{YOUR_APP_PATH}/vendor/autoload.php';

Кроме того, если вы скачали напрямую.zipи.tar.gz,autoload.phpпуть будет вsrc/autoload.php.

// Include autoloader
require '{YOUR_APP_PATH}/src/autoload.php';

После завершения вышеуказанных операций вы можете начать кэширование и пользоваться преимуществами PhpFastCache. В следующей главе мы расскажем, как использовать PhpFastCache в вашем приложении на простом примере.

Пример

Как я упоминал ранее, PhpFastCache поддерживает несколько файловых адаптеров для кэширования. В этом разделе я представлю два файловых адаптера, файловую систему и Redis.

Кэширование с файловыми адаптерами

Создайтеfile_cache_example.phpфайл и напишите код ниже. Я предполагаю, что вы используете рабочий процесс Composer, поэтомуvendorкаталог будет сfile_cache_example.phpфайл на том же уровне. Если вы установили PhpFastCache вручную, вам необходимо изменить файловую структуру в соответствии с реальной ситуацией.

<?php
/**
 * file_cache_example.php
 *
 * Demonstrates usage of phpFastCache with "file system" adapter
 */
 
// Include composer autoloader
require __DIR__ . '/vendor/autoload.php';
 
use phpFastCache\CacheManager;
 
// Init default configuration for "files" adapter
CacheManager::setDefaultConfig([
  "path" => __DIR__ . "/cache"
]);
 
// Get instance of files cache
$objFilesCache = CacheManager::getInstance('files');
 
$key = "welcome_message";
 
// Try to fetch cached item with "welcome_message" key
$CachedString = $objFilesCache->getItem($key);
 
if (is_null($CachedString->get()))
{
    // The cached entry doesn't exist
    $numberOfSeconds = 60;
    $CachedString->set("This website uses PhpFastCache!")->expiresAfter($numberOfSeconds);
    $objFilesCache->save($CachedString);
 
    echo "Not in cache yet, we set it in cache and try to get it from cache!</br>";
    echo "The value of welcome_message:" . $CachedString->get();
}
else
{
    // The cached entry exists
    echo "Already in cache!</br>";
    echo "The value of welcome_message:" . $CachedString->get();
}

Теперь давайте разберем код по частям. Первое, что вы видите, этоautoload.phpИмпорт файла, а затем импорт используемого пространства имен:

// Include composer autoloader
require __DIR__ . '/vendor/autoload.php';
 
use phpFastCache\CacheManager;

При использовании кэширования файлов лучше указать путь к каталогу для хранения файлов, созданных системой кэширования. Следующий код делает именно это:

// Init default configuration for "files" adapter
CacheManager::setDefaultConfig([
  "path" => __DIR__ . "/cache"
]);

Конечно нужно убедитьсяcacheКаталог существует, и веб-сервер имеет доступ для записи.

Затем мы создаем экземпляр объекта кеша с помощьюwelcome_messageЗагрузите соответствующий объект кеша.

// Get instance of files cache
$objFilesCache = CacheManager::getInstance('files');
 
$key = "welcome_message";
 
// Try to fetch cached item with "welcome_message" key
$CachedString = $objFilesCache->getItem($key);

Если объект не существует в кеше, добавьте его в кеш со сроком действия 60 с, а затем прочитайте и отобразите его из кеша. Если он существует в кеше, получить его напрямую:

if (is_null($CachedString->get()))
{
    // The cached entry doesn't exist
    $numberOfSeconds = 60;
    $CachedString->set("This website uses PhpFastCache!")->expiresAfter($numberOfSeconds);
    $objFilesCache->save($CachedString);
 
    echo "Not in cache yet, we set it in cache and try to get it from cache!</br>";
    echo "The value of welcome_message:" . $CachedString->get();
}
else
{
    // The cached entry exists
    echo "Already in cache!</br>";
    echo "The value of welcome_message:" . $CachedString->get();
}

Начать очень легко, правда? Вы можете попробовать запустить программу самостоятельно, чтобы увидеть результаты.

При первом запуске этой программы вы должны увидеть следующий вывод:

Not in cache yet, we set it in cache and try to get it from cache!
The value of welcome_message: This website uses PhpFastCache!

Когда вы запустите его позже, вывод будет выглядеть так:

Already in cache!
The value of welcome_message: This website uses PhpFastCache!

Кэширование файловой системы теперь доступно. В следующей главе мы будем следовать этому примеру, чтобы реализовать кэширование с помощью адаптера Redis.

Кэширование с помощью адаптера Redis

Предполагается, что у вас установлена ​​и запущена служба Redis на порту по умолчанию 6379, прежде чем читать этот раздел.

Настройте ниже. Создайтеredis_cache_example.phpфайл и напишите следующий код:

<?php
/**
 * redis_cache_example.php
 *
 * Demonstrates usage of phpFastCache with "redis" adapter
 *
 * Make sure php-redis extension is installed along with Redis server.
 */
 
// Include composer autoloader
require __DIR__ . '/vendor/autoload.php';
 
use phpFastCache\CacheManager;
 
// Init default configuration for "redis" adapter
CacheManager::setDefaultConfig([
  "host" => '127.0.0.1',
  "port" => 6379
]);
 
// Get instance of files cache
$objRedisCache = CacheManager::getInstance('redis');
 
$key = "welcome_message";
 
// Try to fetch cached item with "welcome_message" key
$CachedString = $objRedisCache->getItem($key);
 
if (is_null($CachedString->get()))
{
    // The cached entry doesn't exist
    $numberOfSeconds = 60;
    $CachedString->set("This website uses PhpFastCache!")->expiresAfter($numberOfSeconds);
    $objRedisCache->save($CachedString);
 
    echo "Not in cache yet, we set it in cache and try to get it from cache!</br>";
    echo "The value of welcome_message:" . $CachedString->get();
}
else
{
    // The cached entry exists
    echo "Already in cache!</br>";
    echo "The value of welcome_message:" . $CachedString->get();
}

Как видите, этот файл в основном такой же, как и раньше, за исключением раздела конфигурации, который инициализирует адаптер Redis.

// Init default configuration for "redis" adapter
CacheManager::setDefaultConfig([
  "host" => '127.0.0.1',
  "port" => 6379
]);

Конечно, если вы хотите запустить службу Redis на нелокальном компьютере, вам необходимо изменить настройки хоста и порта по мере необходимости.

бегатьredis_cache_example.phpдокументации, чтобы увидеть, как это работает. Вы также можете просмотреть вывод в интерфейсе командной строки Redis.

127.0.0.1:6379> KEYS *
1) "welcome_message"

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

Суммировать

В этой статье кратко представлена ​​PhpFastCache, очень популярная библиотека PHP. В первой половине статьи мы обсудили его основы, установку и настройку. Во второй половине статьи мы подробно продемонстрируем ранее упомянутые концепции на нескольких примерах.

Надеюсь, вам понравится эта статья, и вы интегрируете PhpFastCache в свои будущие проекты. Вопросы и обсуждения всегда приветствуются!

Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.


Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из ИнтернетаНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллекти другие поля, если вы хотите видеть больше качественных переводов, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.