Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure Web应用程序:CDN+;应用程序服务与Blob存储_Azure_Azure Web App Service_Azure Storage_Azure Storage Blobs_Azure Cdn - Fatal编程技术网

Azure Web应用程序:CDN+;应用程序服务与Blob存储

Azure Web应用程序:CDN+;应用程序服务与Blob存储,azure,azure-web-app-service,azure-storage,azure-storage-blobs,azure-cdn,Azure,Azure Web App Service,Azure Storage,Azure Storage Blobs,Azure Cdn,如果在Azure中使用与网站/web应用程序(即Azure应用程序服务)相关的CDN,那么使用blob存储与仅使用web应用程序作为端点相比有哪些优点/缺点 例如,一个简单的CMS网站将所有上传的图像存储在/uploads/myimage.jpg中 使用CDN,我可以在mywebsite.com/uploads/设置它的端点,或者我可以创建一个blob容器,将CMS设置为在那里存储图像,并将其设置为CDN的源 我选择其中一种方案的考虑因素是什么?如果我理解你的问题,你是在问两种不同方案的优缺点:

如果在Azure中使用与网站/web应用程序(即Azure应用程序服务)相关的CDN,那么使用blob存储与仅使用web应用程序作为端点相比有哪些优点/缺点

例如,一个简单的CMS网站将所有上传的图像存储在/uploads/myimage.jpg中

使用CDN,我可以在mywebsite.com/uploads/设置它的端点,或者我可以创建一个blob容器,将CMS设置为在那里存储图像,并将其设置为CDN的源


我选择其中一种方案的考虑因素是什么?

如果我理解你的问题,你是在问两种不同方案的优缺点:

  • 使用由Azure Blob存储支持的Azure CDN
  • 使用直接访问底层Web应用程序的Azure CDN
  • 老实说,两者之间没有太大区别。当向您的CDN请求资产时,Azure将检索内容、缓存内容并提供服务。因此,一旦加载了CDN的缓存,这两种情况之间就没有区别了

    如果缓存过期标头的时间很短,并且您正在处理非常大的文件和大量的请求,那么使用Blob存储进行初始加载将是减轻Web应用程序负载的更好选择


    我可能会从最容易实现的解决方案开始,只有在遇到问题时才进行调整

    正如罗布在回答中所说,就性能而言,没有太大区别。以下是我认为Web应用支持的CDN和BLB支持的CDN之间的核心差异:

    • 对于对象的第一次命中(或缓存过期后的命中),Web应用支持的CDN最初将通过您的Web应用提供该流量路由。如果它是一个非常大的资源(例如视频文件),您可能会注意到由于以异常高的方式消耗带宽而导致性能间歇性下降(直到该对象缓存在CDN中)。Blob存储没有相同类型的带宽限制
    • 对于支持Web应用的CDN,您必须记住,您的存储受到您选择的Web应用层的限制。例如,如果您有10 GB的资产,这可能会迫使您进入更高的级别。使用Blob存储,您将拥有500TB的总持久存储空间,对象大小可达4.77TB
    • Web应用支持CDN,在您删除Web应用之前,Web应用中的存储是持久的,就像blob存储一样。然后那个存储器就不见了。使用Blob存储,即使删除了一个Web应用程序(或整个应用程序服务),您的存储也将保留。当然,如果删除存储帐户,您的对象将消失
    • 如果您有多个web应用程序(或其他地方托管的其他应用程序)所需的资产,您将开始有一个应用程序的链接,指向另一个应用程序的资产,引入依赖关系(例如web应用程序
      a
      ,带有指向web应用程序
      B
      中内容的css链接)。你需要小心处理。或者将公共资产存储在blob存储中,避免应用程序到应用程序的链接依赖关系
    • Blob存储可以让您选择将静态资产定位在与web应用不同的区域。使用web应用程序存储,它们将始终处于同一位置。(我不是在提倡跨区域分离内容;只是指出这样做的灵活性)
    • Blob存储的内容管理可以通过多种方式完成:直接REST API调用、基于SDK的调用以及许多第一方和第三方工具。对于Web应用程序内容,没有此类API和工具;您必须在代码中部署资产,或者在启动时从另一个源(例如blob存储)复制内容(或者手动、通过脚本或您选择的其他方式)

    您确实理解我的问题,谢谢。我很好奇是否有任何成本方面的考虑,如存储空间、带宽成本等。我还看到了有关数据寿命和保证的参考资料(例如,web应用程序数据可以擦除?)。但是找不到任何具体的东西,太好了。为了使这个实现细节真正重要,您必须为大文件推送一些主要流量。很抱歉,在点击return获得一条新线后,我扩展了我的评论:/。如果还有其他问题,我会暂时不回答这个问题,但明天我会接受你的答案:)@DannyT,Web应用程序文件实际上是由Azure存储支持的。我知道清除Web应用程序文件的唯一方法是显式删除它们,或者在发布时意外选中“在目标位置删除其他文件”。那个很痛,问我怎么知道的。:-)您可以使用Blob存储进行地理复制,以获得额外的安心。