Answer the question
In order to leave comments, you need to log in
How to cache views in Laravel 5.6?
I can't figure out how to output a template cached by individual elements.
In all lessons, view is called from the controller for the entire page at once.
For example, let's take this code:
public function show($id) {
$menu = Menu::getMenu(); // получаем объект состоящий из пунктов и подпунктов главного раскрывающегося меню
$sidebar = $this->getSidebar(); // получаем массив, объектов для боковой навигации - заголовки блоков и объекты для заполнения этих блоков (популярные статьи, новинки товаров, форма подписки и т.д.)
$page = Page::find($id); // объект содержащий метатеги, заголовки, картинки и прочий контент страницы
return view('page.show', compact('menu', 'sidebar', 'page'));
}
public function show($id) {
$page_show = Cache::rememberForever('page'.$id, function() {
$menu = Menu::getMenu(); // получаем объект состоящий из пунктов и подпунктов главного раскрывающегося меню
$sidebar = $this->getSidebar(); // получаем массив, объектов для боковой навигации - заголовки блоков и объекты для заполнения этих блоков (популярные статьи, новинки товаров, форма подписки и т.д.)
$page = Page::find($id); // объект содержащий метатеги, заголовки, картинки и прочий контент страницы
return view('page.show', compact('menu', 'sidebar', 'page'))->render();
});
return $page_show;
}
public function show($id) {
$menu = Cache::rememberForever('menu', function() {
return Menu::getMenu(); // получаем объект состоящий из пунктов и подпунктов главного раскрывающегося меню
});
$sidebar = Cache::remember('sidebar', 10080, function() {
return $this->getSidebar(); // получаем массив, объектов для боковой навигации - заголовки блоков и объекты для заполнения этих блоков (популярные статьи, новинки товаров, форма подписки и т.д.)
});
$page = Cache::rememberForever('page'.$id, function() {
return Page::find($id); // объект содержащий метатеги, заголовки, картинки и прочий контент страницы
});
return view('page.show', compact('menu', 'sidebar', 'page'));
}
Answer the question
In order to leave comments, you need to log in
In order not to cache everything in each controller, you can do the same in View Composer , and menu templates, sidebars and others can simply be included in the desired template.
Essentially, to cache html (almost nothing to gain), you can use a widget system, a homemade one, or something like arrilot/laravel-widgets . You call the widget itself in the template, and the widget already resolves what it gives and how it caches.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question