Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Настройка кеширования в PHP с помощью Symfony-компонента Cache

by
Difficulty:IntermediateLength:ShortLanguages:

Russian (Pусский) translation by Alexey Pyltsyn (you can also view the original English article)

Сегодня я покажу вам Symfony-компонент Cache, простой способ добавить кtширование для PHP-приложений. Это помогает улучшить общую производительность приложения путем уменьшения времени загрузки страницы.

Symfony-компонент Cache

Компонент Symfony под названием Cache позволяет настроить кеширование в PHP-приложениях. Сам компонент очень прост в установке и в настройке, что позволяет вам быстро начать работу. Кроме того он предоставляет поддержку различных адаптеров, которые перечислены в следующем списке:

  • адаптер базы данных
  • адаптер файловой системы
  • адаптер memcached
  • адаптер Redis
  • адаптер APCu
  • и многое другое

Когда дело доходит до кэширования с помощью Symfony-компонента Cache, есть несколько терминов, с которыми вам следует ознакомиться.

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

В этой статье мы изучим, как вы можете раскрыть мощь Symfony-компонента Cache. Как обычно, мы начнем с установки и конфигурации, а затем перейдём к рассмотрению нескольких реальных примеров во второй половине статьи.

Установка и конфигурация

В этом разделе мы собираемся установить компонент Cache. Я предполагаю, что вы уже установили Composer в своей системе, тогда вам нужно установить компонент Cache из Packagist, что и делает Composer.

Как только вы установили Composer, перейдите к установке компонент Cache, используя следующую команду.

Эта команда должна была создать файл composer.json, который должен выглядеть следующим образом:

Это для установки, но как добавить компонент в приложение? Это просто дело включение файла autoload.php, созданный Composer в вашем приложении, как показано в следующем фрагменте.

Реальный пример

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

Для начала давайте создадим файл index.php со следующим содержимым.

Давайте рассмотрим основные части файла index.php, чтобы понять, что они делают.

Создайте пула кеша

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

Вы можете предоставить три необязательных аргументов для объекта FilesystemAdapter:

  • пространство имён, в котором вы бы хотели создать элементы кеша
  • время действия в секундах элементов кеша
  • директория, в которой будет храниться кеш.

Сохранение строковых значений

Поскольку мы уже создали пул для хранения кеша, то уже можем использовать его для хранения элементов кеша.

Во-первых мы воспользуемся методом getItem для извлечения элемента кэша с ключом demo_string. Далее мы используем метод isHit для проверки, присутствует ли искомое значение в элемента кеша $demoString.

Поскольку это первый раз, когда мы получаем элемент кэша demo_string, метод isHit должен возвращать значение false. Далее мы используем метод set объекта $demoString для установки значения кеша. Наконец, мы сохраняем элемент кеша $demoString в пул кеша $cachePool с помощью метода save.

Теперь, когда мы сохранили элемент в кеше, давайте посмотрим, как получить его из него.

Здесь мы используем метод hasItem для проверки существования элемента кеша в кеш-пуле перед его возвратом.

Теперь давайте посмотрим, как удалить все элементы кеша из пула:

Сохранение значений-массивов

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

Как вы можете видеть, мы можем просто добавить элемент кеша со значением массива, так же, как мы делали это для строки.

Далее давайте посмотрим, как удалять определенный элемент кеша из пула кеша.

Здесь мы используем метод deleteItem для удаления элемента demo_array из пула кеша.

Установка даты истечения срока действия кешированных элементов

До сих пор мы кешированы элементы в пул без даты истечения срока действия. Однако, как правило, вряд ли вы захотите хранить элементы в кеше постоянно. Например, вы можете периодически сохранять элементы кэш, так что необходим механизм, который удаляет элементы с истекшим сроком действия кеша.

В этом разделе мы обсудим, как сохранять элементы в кеше вместе с датой истечения срока действия.

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

В нашем примере мы используем метод sleep для проверки наличия кешированного элемента в пул кеша.

Пойдем дальше и проверим этот код, чтобы увидеть, как это работает!

Заключение

Сегодня мы кратко рассмотрели Symfony-компонент Cache, который позволяет настроить кеширование в PHP-приложениях. Он также поддерживает различные адаптеры кеширования, которые в конечном итоге предоставляют вам гибкость в выборе вида серверной технологии хранения, которую вы хотите использовать.

Не стесняйтесь выражать свои мысли и запросы, используя форму ниже.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.