Динамически обновляйте 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.