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

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

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

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

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

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

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

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