Blade компілює шаблони в звичайний PHP і кешує в storage/framework/views, тож сам синтаксис майже нічого не коштує. Повільними сторінки роблять інші речі.
Що зазвичай гальмує:
- Запити з шаблонів.
$post->author->nameу циклі безwith()- N+1, найчастіша причина.Model::preventLazyLoading()ловить це в розробці. - Сотні компонентів. Кожен компонент з класом - створення об'єкта через контейнер, злиття атрибутів, окремий шаблон. Таблиця на 500 рядків з п'ятьма компонентами в рядку - тисячі рендерів.
- Вкладені Livewire-компоненти в циклі - кожен зі своїм станом і запитами.
@includeу великих циклах і важкі обчислення в шаблоні.- Перший запит після деплою, якщо шаблони не прекомпільовані.
Як виміряти: Debugbar чи Telescope показують кількість і час шаблонів і запитів; профайлер (SPX, Blackfire, Xdebug) - де саме витрачено час. Корисно порівняти час до рендеру й сам рендер.
Що робити:
php artisan view:cache(входить вoptimize) на деплої;- жадібно завантажувати дані в контролері й передавати в шаблон готове;
- у великих списках - простіший HTML замість глибоко вкладених компонентів; анонімні компоненти дешевші за компоненти з класом;
- кешувати фрагменти, що рідко змінюються (
Cache::rememberнавколоview()->render()), або всю гостьову сторінку на рівні CDN; - пагінація замість виводу всього.
Після змін - знову виміряти: оптимізація без вимірювань часто прискорює не те.
Докладніше в документації: Оптимізація завантаження представлень