кодесурса
«Laravel

Laravel (5,7) Кэш

script1adsense2code
script1adsense3code

Основное использование кэша в 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) от Почтальона или в браузере, как показано ниже.

«Laravel

Ответы с кешем

Давайте теперь попробуем использовать кеширование и посмотрим, будет ли существенная разница во времени, необходимом для ответа данными. Измените метод 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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code