首先:如果您在 Azure 中运行您的站点,您应该考虑使用 Azure blob 与 Amazon S3 存储,以避免出口成本(在 AWS 端)和延迟。
现在:就从存储中获取内容而言,这是一种相当常见的模式,因为(看起来您已经看到)部署包变得非常大。另外,更新单个文件并不容易,因为您需要重新捆绑/部署包。
在您的 Web 角色中,您有一个OnStart()
事件会在您的实例添加到负载均衡器之前触发。这可能是放置内容下载代码的最佳位置(或通过触发初始化应用程序或脚本来执行下载的启动脚本中)。在 C# 中,一旦引用 a CloudBlockBlob
,就可以执行DownloadToFile()
或DownloadToFileAsync()
从 blob 中获取内容并存储在本地 Web 应用程序的内容目录中。还有许多其他方法 - 仅调用文件下载方法作为示例。
至于自动更新:没有 blob-watcher 的概念;你需要实现一些东西来识别更新。也许是关于管理主题的服务总线消息,每个实例都订阅该主题,监听更新消息?然后,每次推送新内容时,都可以向标识内容的主题推送一条消息(可能带有子网站名称)。在此期间,您也可以在每个 Web 角色实例中启动一个侦听器OnStart()
。