А че в yii2 такая долгая генерация шаблонов?

погонял, значит затестил это дело без кеширования. Значит генерация данных для шаблона занимает порядка 0.06c. Многовато конечно, но терпимо. А вот шаблон с ListView и другими стандартными виджетами строит страницу уже 0.220c в среднем(на 30 новостей, аля бложик). Как же так? Они ж себя позиционируют как суперскоростные?! Как его ускорить? (без кеширования, чтоб меньше 0.1c было, хоть 0.099)
  • Вопрос задан
  • 433 просмотра
Пригласить эксперта
Ответы на вопрос 2
27cm
@27cm
TODO: Написать статус
Они ж себя позиционируют как суперскоростные?!

Каждый первый фреймворк себя так позиционирует, никто не желает быть тормозом.

Yii debug toolbar and debugger
XDebug profiler
XHProf

Какова производительность yii2 и laravel?
Ответ написан
@LAV45
Для начала посмотри что выдает панель debug
Сколько памяти потребляет, сколько запросов к БД делает.
1) Если количество запросов зашкаливает (>>10) проверь все ли связанные данные были подключены
Например
News::find()
    ->with([
        'author.profile',
        'category',
        'comments',
        // И остальные
    ])
    ->limit(30)
    ->all()

Таким образом во время запроса News сразу же будут получены и все связанные данные
Вместо
SELECT * FROM author WHERE id = 1;
SELECT * FROM author WHERE id = 2;
SELECT * FROM author WHERE id = 5;

Должен сгруппировать все запросы в один
SELECT * FROM author WHERE id in (1,2,5);

2) Если потребление памяти зашкаливает тогда к запросу можно добавить ->asArray()
News::find()
    ->with([...])
    ->asArray()
    ->limit(30)
    ->all()

Но тогда все данные вы будете получать не в виде объекта, а в виде массива, что поможет сэкономить >50% оперативки.

ЗЫ "Вы не любите кошек?! Вы просто не умеете их готовить!"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы