Как динамически создавать sitemap в yii2?

Помогите пожалуйста, как динамично создать простую карту сайта в данном фреемворке? На сайте есть статьи, ссылка на них "имя сайта/forecast/1" где 1 это id статьи.

Как вообще это делается? В поисковике не смог найти внятных объяснений.

Примерно представляю, что делается запрос к БД, потом сформировывается xml и сохраняется в файл. Но с запросом к БД возрастает и количество этих запросов, не очень хотелось бы, чтобы их было много. Хостинг жалуется на них. Yii2 в этом плане очень плохо оптимизирован.
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
@bashcod
Не видя кода и данных отладки трудно что либо сказать конкретно.

Количество запросов зависит от количества сущностей для которых вы строите карту сайта (N).
Так же количество запросов зависит от количества подключаемых связей в них (N*M).
Почитайте про отложенную и жадную загрузку.
Научитесь пользоваться дебаггером (Yii Debug Panel). Там пишется сколько ресурсов и куда уходит, сколько времени тратится на выполнение запросов, в каком порядке они выполняются и какой участок кода вызывает их выполнение.
Далее почитайте про кэширование результатов запросов во фреймворке.
И еще, возможен вариант, что не индексированы поля в БД и поэтому БД дает нагрузку (тупо перебирает все записи вместо поиска по индексу).

Если все это не помогает.
Делаете задачу в консоли на формирование файла с картой сайта.
Задача кладет файл куда Вам нужно.
Далее настраиваете крон с этим задании. Периодичность выбираете в зависимости от периодичности обновления сайта и необходимости актуализации. Это позволить не делать сложные запросы при каждом посещении или запросе карты сайта.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы