Динамически обновляйте sitemap.xml в веб-роли Azure.

Я перемещаю свой существующий веб-сайт в Azure. В лазурной сети у меня есть
1. Сайт по умолчанию порт и
2. Сервис в другом порту, скажем, 8000

Теперь мой веб-сайт создает несколько динамических страниц, и требуется обновить sitemap.xml новыми URL-адресами. На этапе разработки я могу создать и обновить файл sitemap.xml из сервиса. Но это невозможно на промежуточном сервере.

Я не могу понять, почему это происходит. Может ли кто-нибудь рассказать мне о решении, где я могу создать файл sitemap.xml в корневой папке веб-сайта из Службы?

1 ответ

Я бы сказал, что у вас гораздо большая проблема, чем сам sitemap.xml!

Работая в Azure WebRole, у вас непостоянное хранилище. Это цена, которую мы все платим за масштабируемость / эластичность / устойчивость облака. Это означает, что если что-то случится с аппаратным обеспечением ("голое железо"), на котором выполняется ваш код, Azure создаст новый экземпляр на новом куске металла и развернет ваш оригинальный пакет. В этот момент все ваши динамически сгенерированные страницы будут потеряны, поскольку они не являются частью вашего исходного пакета.

Для всего контента, который ваш сайт генерирует / принимает из пользовательских загрузок и т. Д., Вы должны использовать хранилище BLOB- объектов Azure, чтобы сохранить его. Как только вы поместите свой динамический контент в хранилище BLOB-объектов, у вас будет несколько вариантов доставки его конечному пользователю:

  • ASP.NET Handler (ashx), который будет читать содержимое BLOB-объекта и перенаправлять (отправлять) его обратно конечному пользователю (я бы не стал этого делать);
  • Динамически генерировать соответствующие ссылки на контент в хранилище BLOB-объектов. Использование подписи общего доступа, если контент должен быть защищен и доступен не всем;
  • Использование настраиваемого поставщика VirtualPath для создания удаленного содержимого (BLOB-объекта Azure) для конечного пользователя выглядит локальным.

И теперь вы, наверное, уже догадались - лучший способ поддерживать Sitemap.xml всегда в актуальном состоянии - это снова использовать ASP.NET Handler для динамической генерации своего контента. Конечно, используя какое-то кэширование (может быть даже блоб), чтобы избежать дорогостоящих вызовов и графов объектов при каждом запросе к Sitemap.xml.

Другие вопросы по тегам