$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();