1

我正在将现有网站移至 Azure。在 azure webrole 中,我有
1. 默认端口的网站和
2. 另一个端口的服务让我们说:8000

现在我的网站创建了一些动态页面,并且要求使用新的 URL 更新 sitemap.xml。在开发阶段,我能够从服务中创建和更新 sitemap.xml 文件。但这在登台服务器上是不可能的。

我无法理解为什么会这样。谁能告诉我一个解决方案,我可以在服务的网站根文件夹中创建一个 sitemap.xml 文件?

4

1 回答 1

1

我会说你有比 sitemap.xml 本身更大的问题!

在 Azure WebRole 中工作,您拥有一个非持久性存储。这是我们为云的可扩展性/弹性/弹性付出的代价。这意味着,如果运行代码的硬件(裸机)发生问题,Azure 将在一块新金属上实例化一个新的,并部署您的原始包。那时,您所有动态生成的页面都将丢失,因为它们不是您原始包的一部分。

对于您的站点从用户上传/等生成/接受的所有内容,您必须使用Azure Blob 存储来保持。在 Blob 存储中获取动态内容后,您可以通过多种方式将其交付给最终用户:

  • ASP.NET 处理程序(ashx),它将读取 blob 内容并将其重新传输(发送)回最终用户(我不会这样做);
  • 动态生成指向 blob 存储中内容的适当链接。如果内容必须受到保护且并非所有人都可以使用,则使用共享访问签名;
  • 使用自定义 VirtualPath 提供程序使最终用户的远程内容 (Azure Blob) 看起来像本地内容。

现在您可能已经猜到了——让 Sitemap.xml 始终保持最新的最佳方法是再次使用 ASP.NET 处理程序来动态生成其内容。当然,使用某种类型的缓存(甚至可能是 blob)来避免对 Sitemap.xml 的每个请求的昂贵调用和对象图。

于 2013-10-17T09:38:14.820 回答