$key = request()->get('page', 1); $posts = Cache::rememberForever("posts_$key", function() { return Post::with('categories')->with('tags')->orderByDesc('updated_at')->paginate(20); });
Так мы кешируем навсегда. После обавления нового поста, кэш нужно удалять:
Создаем метод для удаления в контроллере:
public static function deleteCache() { $posts = Cache::get('posts_1'); // количество страниц пагинации $lastPage = $posts->lastPage(); for ($i = 1; $i <= $lastPage; $i++) { Cache::forget('posts_' . $i); } }
И используем где нужно:
static::deleteCache();