Раскройте весь потенциал своих приложений Laravel, освоив методы кэширования. Узнайте, как повысить скорость и эффективность, реализовав и оптимизировав стратегии кэширования.
Понятие о кэшировании в Laravel
Кэширование — это способ хранения часто запрашиваемых данных во временном хранилище, применяемый с целью сократить необходимые для извлечения данных время и ресурсы.
В кэшировании на Laravel имеются разные определяющие факторы, в том числе файл, база данных и хранилище в памяти, такое как Redis или Memcached. Ими обеспечиваются гибкость и масштабируемость, облегчается оптимизация производительности приложения.
Таким образом, чтобы считать данные, нужно получить их из системы кэширования, а не обращаться напрямую к базе данных.
Почему важно кэширование
- Повышение производительности: при кэшировании сохраняются часто запрашиваемые данные, снижается нагрузка на базу данных, в итоге сокращается время отклика и совершенствуется пользовательское взаимодействие.
- Масштабируемость: благодаря эффективным стратегиям кэширования увеличенный трафик обрабатывается без снижения производительности, что важно для приложений с перспективой роста.
- Снижение затрат: при кэшировании минимизируются запросы к базе данных, уменьшается нагрузка на сервер, в итоге сокращаются затраты на инфраструктуру.
Настройка кэша 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 () { ... }
— функция, запускаемая при отсутствии данных в кэше.
Принцип работы
- Проверка кэша: сначала с помощью
Cache::remember
проверяется наличиеcache-key
в кэше. - Извлекаются или создаются данные:
- если данные имеются, они извлекаются им из кэша;
- если данных нет, запускается функция, ею данные создаются и затем кэшируются.
Пример 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. Кэшированием статей блога, в том числе специально для аутентифицированных пользователей, значительно снижается нагрузка на базу данных, убыстряется отклик.
Читайте также:
- REST API CRUD в Laravel 11 с лучшими практиками
- 3 альтернативы репозитория в Laravel
- Laravel: неизвестный, но эффективный способ реализации фильтров в Eloquent
Читайте нас в Telegram, VK и Дзен
Перевод статьи Behlül Bozal: Boost Your Laravel Performance: The Ultimate Guide Laravel Caching