Laravel (5,7) Кэш
Основное использование кэша в Laravel
Laravel позволяет нам легко переключаться в режим кэширования. Нам очень легко сменить водителя. Просто проверьте config / cache.php, чтобы увидеть доступные драйверы:
- АРС
- массив
- база данных
- файл
- Memcached
- Redis
Затем вы можете установить следующую строку в вашем .env файле, чтобы изменить драйвер кеша:
CACHE_DRIVER = файл
Вы можете пойти дальше и попробовать эти примеры, не беспокоясь о конфигурации, так как по умолчанию это файл.
Фасад Cache предоставляет множество статических методов для создания, обновления, получения, удаления и проверки существования содержимого кэша. Давайте рассмотрим некоторые из этих методов, прежде чем создавать демонстрационное приложение.
Создать / обновить значение кэша
Мы можем добавить или обновить значения кэша с помощью метода put (). Метод принимает 3 необходимых аргумента:
- ключ
- Значение
- время истечения в минутах
Например:
Cache::put('key', 'value', 10);
Ключ является уникальным идентификатором для кэша и будет использоваться для извлечения его при необходимости.
Кроме того, мы можем использовать метод Remember () для автоматизации поиска и обновления кэша. Метод сначала проверяет наличие ключа и, если он был создан, возвращает его. В противном случае он создаст новый ключ со значением, возвращаемым из его замыкания следующим образом:
Cache::remember('articles', 15, function() {
return Article::all();
});
Значение 15 - это количество минут, в которое он будет кэширован. Таким образом, нам даже не нужно проверять, не истек ли срок действия кэша. Laravel сделает это за нас и восстановит или восстановит кеш, и нам не нужно будет явно об этом говорить.
Получить значение кэша
Значения кэша могут быть получены с помощью метода get (), которому просто нужен ключ, переданный в качестве аргумента, чтобы узнать, какое значение кэша нужно получить:
Cache::get('key');
Проверка на существование
Иногда очень важно проверить, существует ли ключ кеша, прежде чем мы сможем получить или обновить его. Метод has () становится удобным:
if (Cache::has('key')){
Cache::get('key');
} else {
Cache::put('key', $values, 10);
}
Удаление значения кэша
Значения кэша могут быть удалены с помощью метода Forgot () и передачи ему ключа:
Cache::forget('key');
Мы также можем извлечь значение кэша и немедленно удалить его. Мне нравится называть это одноразовым кэшированием:
$articles = Cache::pull('key');
Мы также можем очистить кеш еще до того, как он истечет из консоли, используя:
php artisan cache:clear
Кеш на примере
Это будет действительно простая демонстрация, основанная на моем исследовании времени, затраченного на обработку запросов с кэшем или без него. Чтобы перейти непосредственно к делу, я предлагаю вам создать экземпляр Laravel самостоятельно и следовать инструкциям.
Модель и Миграции
Создайте модель с именем Article, используя команду ниже:
php artisan make:model Article -m
Опция -m автоматически создаст для нас миграцию, поэтому нам не нужно запускать команду «создать миграцию». Эта единственная команда создаст файл App / Article.php и файл базы данных / migrations / xxxx_xx_xx_xxxxxx_create_articles_table.php.
Обновите новый файл миграции, добавив два поля таблицы:
public function up() {
Schema::create('articles', function (Blueprint $table) {
$table->increments('id');
// add the following
$table->string("title");
$table->string("content");
$table->timestamps();
});
}
Теперь мы можем перенести нашу базу данных с помощью команды artisan:
php artisan migrate
Заполнение нашей базы данных
Следующим шагом является заполнение таблицы статей. В базе данных / seed / DatabaseSeeder.php обновите команду run ():
public function run() {
Model::unguard();
// use the faker library to mock some data
$faker = Faker::create();
// create 30 articles
foreach(range(1, 30) as $index) {
Article::create([
'title' => $faker->sentence(5),
'content' => $faker->paragraph(6)
]);
}
Model::reguard();
}
Библиотека Faker включена в Laravel, чтобы помочь быстро генерировать поддельные данные. Мы используем метод range () PHP для генерации 30 поддельных столбцов.
Теперь мы можем заполнить нашу базу данных командой ремесленника:
php artisan db:seed
Создание контроллера товаров
Затем мы можем создать контроллер, который будет обрабатывать запросы и кэширование. Пока будет пусто:
php artisan make:controller ArticlesController
... затем мы добавляем маршрут в app / Http / rout.php, который будет указывать на метод индекса контроллера:
Route::group(['prefix' => 'api'], function() {
Route::get('articles', '[email protected]');
});
Теперь, когда наша база данных настроена с примерами данных, мы наконец можем приступить к тестированию.
Ответы без кеша
Давайте посмотрим, как выглядят наши обычные методы действий контроллера без кэширования и сколько времени занимает обработка ответа. В методе index () верните ресурс статей:
public function index() {
$articles = Articles::all();
return response()->json($articles);
}
Теперь вы можете запустить приложение и получить доступ к URL
(http: // localhost / api / articles) от Почтальона или в браузере, как показано ниже.
Ответы с кешем
Давайте теперь попробуем использовать кеширование и посмотрим, будет ли существенная разница во времени, необходимом для ответа данными. Измените метод index () на:
public function index() {
$articles = Cache::remember('articles', 22*60, function() {
return Article::all();
});
return response()->json($articles);
}
Теперь мы кешируем статьи с помощью метода Remember (), который мы обсуждали, в течение 22 часов. Бегите снова и следите за временем.
Предыдущая: Laravel (5.7) Вещание
Следующая: Laravel (5.7) Коллекции
Новый контент: Composer: менеджер зависимостей для PHP , R программирования