Раскройте весь потенциал своих приложений Laravel, освоив методы кэширования. Узнайте, как повысить скорость и эффективность, реализовав и оптимизировав стратегии кэширования.

Понятие о кэшировании в Laravel

Кэширование  —  это способ хранения часто запрашиваемых данных во временном хранилище, применяемый с целью сократить необходимые для извлечения данных время и ресурсы.

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

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

Почему важно кэширование

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

Настройка кэша Laravel

Система кэширования в Laravel уже установлена. Поэтому конфигурации оставим без объяснений, для них понадобится отдельная статья.

Использование кэша Laravel

В Laravel для взаимодействия с кэшем имеется простой и выразительный API, вот типичные базовые операции кэширования:

// Хранение данных:
Cache::put('key', 'value', $seconds);

// Извлечение данных:
$value = Cache::get('key');

// Проверка наличия данных:
if (Cache::has('key')) {}

// Удаление данных:
Cache::forget('key');

// Применение тегов кэша:
Cache::tags(['people', 'artists'])->put('John', $john, $seconds);

cache:remember  —  самый применяемый в проектах метод кэша.

Данные им кэшируются и при необходимости извлекаются. Если данных в кэше нет, указанная операция им выполняется, а результат сохраняется в кэше:

$value = Cache::remember('cache-key', $minutes, function () {
return DB::table('users')->get();
});
  • cache-key  —  уникальный ключ для данных;
  • $minutes  —  сколько минут данные останутся в кэше;
  • function () { ... }  —  функция, запускаемая при отсутствии данных в кэше.

Принцип работы

  1. Проверка кэша: сначала с помощью Cache::remember проверяется наличие cache-key в кэше.
  2. Извлекаются или создаются данные:
  • если данные имеются, они извлекаются им из кэша;
  • если данных нет, запускается функция, ею данные создаются и затем кэшируются.

Пример 1. Кэширование статей блога

Методом cache:remember статьи блога эффективно кэшируются и извлекаются, вот как кэшировать все статьи на 10 минут:

$blogs = Cache::remember('all-blogs', 10, function () {
return DB::table('blogs')->get();
});

Пример 2. Кэширование отфильтрованных блогов для аутентифицированных пользователей

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

$userId = Auth::id(); // Получаем идентификатор аутентифицированного пользователя
$cacheKey = 'user-blogs-' . $userId;

$userBlogs = Cache::remember($cacheKey, 10, function () use ($userId) {
return DB::table('blogs')->where('user_id', $userId)->get();
});

Заключение

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

Читайте также:

Читайте нас в Telegram, VK и Дзен


Перевод статьи Behlül Bozal: Boost Your Laravel Performance: The Ultimate Guide Laravel Caching

Предыдущая статьяСекреты в Android. Часть 1