我正在将现有网站迁移到 Azure。在azure webrole中我有
1.默认端口的网站和
2.另一个端口的服务比如说:8000
现在我的网站创建了一些动态页面,要求是使用新的 URL 更新 sitemap.xml。在开发阶段,我可以从服务创建和更新 sitemap.xml 文件。但这在登台服务器上是不可能的。
我无法理解为什么会发生这种情况。任何人都可以告诉我一种解决方案,可以通过服务在网站的根文件夹中创建 sitemap.xml 文件吗?
最佳答案
我想说你遇到的问题比 sitemap.xml 本身大得多!
在 Azure WebRole 中工作时,您拥有非持久存储。这是我们为云的可扩展性/弹性/弹性付出的代价。这意味着,如果运行代码的硬件(裸机)发生问题,Azure 将在一 block 新金属上实例化一个新硬件,并部署您的原始包。此时,所有动态生成的页面都会丢失,因为它们不是原始包的一部分。
对于您的网站从用户上传等生成/接受的所有内容,您必须使用 Azure Blob storage坚持下去。将动态内容放入 Blob 存储后,您可以选择以下几种方式将其交付给最终用户:
- ASP.NET 处理程序 (ashx),它将读取 blob 内容并将其重新流式传输(发送)给最终用户(我不会这样做);
- 动态生成指向 Blob 存储中内容的适当链接。使用Shared Access Signature内容是否必须受到保护并且并非所有人都可以访问;
- 使用custom VirtualPath provider使远程内容 (Azure Blob) 对于最终用户来说看起来像本地内容。
现在您可能已经猜到了 - 让 Sitemap.xml 始终保持最新的最佳方法是再次使用 ASP.NET 处理程序来动态生成其内容。当然,使用某种类型的缓存(甚至可能是 blob)来避免每次请求 Sitemap.xml 时昂贵的调用和对象图。
关于azure - 动态更新 Azure webrole 中的 sitemap.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19420758/