2017 © Pedro Peláez
 

library laravel5-nested-caching

Nested Caching для Laravel 5

image

slydeath/laravel5-nested-caching

Nested Caching для Laravel 5

  • Sunday, June 25, 2017
  • by SlyDeath
  • Repository
  • 2 Watchers
  • 1 Stars
  • 126 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 117 % Grown

The README.md

Nested Caching для Laravel 5

Latest Stable Version Total Downloads License, (*1)

Версии

Версия 3.* для Laravel 5.8, для 5.6-5.7 использовать релиз 2.*, (*2)

Установка

Добавить пакет в composer.json:, (*3)

composer require slydeath/laravel5-nested-caching

Открыть config/app.php и добавить сервис провайдера в массив providers:, (*4)

SlyDeath\NestedCaching\NestedCachingServiceProvider::class,

Для размещения файла конфигурации выполнить:, (*5)

php artisan vendor:publish --provider="SlyDeath\NestedCaching\NestedCachingServiceProvider" --tag=config

Для работы необходимы кэш-драйверы поддерживающие тэгирование - это Memcached или Redis., (*6)

В .env файле для Memcached указываем:, (*7)

CACHE_DRIVER=memcached

для Redis:, (*8)

CACHE_DRIVER=redis

Так же для работы Redis необходимо установить пакет predis/predis:, (*9)

composer require predis/predis

Как использовать?

Кэширование любого отрезка html

Чтобы закэшировать любой произвольный кусок HTML, нужн опросто передать в директиву @cache ключ для кэширования фрагмента:, (*10)

@cache('simple-cache')
    <div>Это произвольный кусок HTML который будет закэширован по ключу "simple-cache"</div>
@endcache

Кэширование моделей

Добавить в класс модели, которая будет кэшироваться, трейт NestedCacheable:, (*11)

use SlyDeath\NestedCaching\NestedCacheable;

class User extends Model
{
    use NestedCacheable;
}

В шаблоне, для кэширования модели, необходимо передать в директиву @cache её инстанс:, (*12)

@cache($user)
    <div>Кэширование модели App\User:</div>
    <ul>
        <li>Имя: {{ $user->name }}</li>
        <li>Email: {{ $user->email }}</li>
    </ul>
@endcache

Кэширование модели на указанное время

Для кэширования модели на определённое время, указываем вторым параметром время жизни в минутах:, (*13)

html @cache($user, 1440) <div>...</div> @endcache, (*14)

Обновление "родителя"

Чтобы при обновлении модели так же сбрасывался кэш "модели-родителя", необходимо обновлять поле updated_at у модели-родителя:, (*15)

use SlyDeath\NestedCaching\NestedCacheable;

class CarUser extends Model
{
    use NestedCacheable;

    protected $touches = ['user']; // Указываем родителя

    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

Пример использования:, (*16)

resources/views/user.blade.php, (*17)

@cache($user)
    <section>
        <h2>Автомобили пользователя {{ $user->name }}</h2>
        <ul>
            @foreach($user->cars as $car)
                @include('user-car');
            @endforeach
        </ul>
    </section>
@endcache

resources/views/user-car.blade.php, (*18)

@cache($car)
    <li>{{ $car->brand }}</li>
@endcache

Кэширование коллекций

Пример кэширования коллекции:, (*19)

@cache($users)

    @foreach ($users as $user)
        @include('user');
    @endforeach

@endcache

The Versions

25/06 2017

dev-master

9999999-dev

Nested Caching для Laravel 5

  Sources   Download

MIT

The Requires

 

by Avatar SlyDeath

25/06 2017

1.2

1.2.0.0

Nested Caching для Laravel 5

  Sources   Download

MIT

The Requires

 

by Avatar SlyDeath

07/03 2017

v1.1

1.1.0.0

Nested Caching для Laravel 5

  Sources   Download

MIT

The Requires

 

by Avatar SlyDeath