Я наткнулся на эту библиотеку https://github.com/GeneaLabs/laravel-model-caching и пытаюсь использовать ее в моем проекте.
Во-первых, я добавил следующую строку в свой .env
:
MODEL_CACHE_STORE=file
Я использую хранилище файлового кэша для тестирования, на производстве я буду использовать redis.
Затем я создал app/CacheableModel.php
со следующим:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use GeneaLabs\LaravelModelCaching\Traits\Cachable;
abstract class CacheableModel extends Model
{
use Cachable;
}
и затем я обновил все мои модели (кроме app/User.php
), как в этом примере:
<?php
namespace App;
class Company extends CacheableModel
{
...
}
, и я протестировал его, используя тестовый маршрут, подобный этому:
Route::get('test', function() {
$testUser = \App\User::where('email', 'test@domain.com')
->with('company.users', 'company.subscription')
->first();
dump($testUser->toArray());
});
Когда я посещаю тестовый маршрут, я вижу загруженные и выгруженные данные.Если я обновлю страницу, она, похоже, не будет кэшировать, чтобы кэшировать вышеуказанный запрос.
Я убедился, что он не кэширует мои красноречивые запросы, просмотрев журнал запросов (используя телескоп laravel), а также storage/framework/cache/data
- он пуст.
Есть идеи, что может быть не так??
Разве это не кэширование, потому что модель app/User.php
не использует базовый класс CacheableModel
, а тестовый запрос начинается с пользовательской модели?