【问题标题】:Azure CDN vs Azure Blob storage origin pull takes way too longAzure CDN 与 Azure Blob 存储源拉取时间太长
【发布时间】:2014-09-29 01:32:06
【问题描述】:

我正在使用 azure blob 存储将图像存储在公共容器中并将它们嵌入到公共网站中。一切正常,blob 在我上传它们的那一刻就在xxxxx.blob.core.windows.net 上公开可用。我想将 Azure CDN 用于他们的边缘缓存基础架构,并在 xxxxx.vo.msecnd.net 设置了一个。

但是现在,当我将图像指向 CDN 时,它会在 15 分钟左右返回 404,然后它开始提供服务。在他们的文档中提到,我们不应该将 CDN 用于高违规或频繁更改的 blob,但是具有公共站点图像上传功能的简单 CMS 可以保证 CDN 不是吗?

【问题讨论】:

  • 我没有看到这个,从 CDN 请求图像时我从来没有收到 404,如果缓存未命中,它只是从源服务器中提取。也许这是固定的?
  • 这有什么更新吗?您最终是否为您的 CMS 使用了 Azure CDN?
  • 我最后没有使用azure cdn
  • 我认为 Azure CDN 在发布后发生了变化。我可以上传 blob 并立即提供服务。
  • 虽然时不时会短暂的404,所以我猜这并不完美。

标签: azure azure-storage azure-cdn


【解决方案1】:

对于上传到我的电子商务网站的产品图片,我目前的情况完全相同。出于所有显而易见的原因,我更喜欢在 Azure blob 存储之上使用 Azure CDN,但不能等待 15 分钟才能获得映像。

目前,我已决定最初存储 blob 存储 URL,但后来将其重写为通过每天运行一次的 Azure WebJob 使用 CDN 域。这似乎是不必要的额外工作,但我还没有找到更好的选择,我真的很想使用 Azure CDN。

【讨论】:

  • 我不确定微软自己是否在内部使用这个cdn,如果是这样,它可能和你使用的方法相同
【解决方案2】:

我现在正在做什么......对于我在部署之前手动上传的网站相关图像和文件 (https://abc.blob.core.windows.net/cdn),如果网站用户使用我的网站上传图像或文件,我在内部将该文件上传到 blob 存储(单独的容器不是 CDN)使用 CloudBlobClient

【讨论】:

    【解决方案3】:

    CDN 用于静态内容交付,但在您的情况下,您需要通过 CDN 进行动态内容交付。您可以使用云服务 + CDN。这使得使用 ASP.net 缓存概念从 CDN 交付动态内容。

    更多详情请参考此链接:Using the Windows Azure Content Delivery Network (CDN)

    【讨论】:

    • 文章建议实现Output Cache,这是一个可行的解决方案,但完全脱离CDN上下文,服务器可以在第一次请求命中后设置header,但其他提供回源的CDN服务可以帮助系统从系统中 100% 卸载请求,Azure CDN 也可以做到,但大约需要 15 分钟后......
    • 看起来确实像输出缓存。但不仅如此,它使用输出缓存机制来确定缓存策略,而是将内容缓存并从CDN交付。因此,首先从自定义代码响应请求,然后从 CDN 提供内容。但是它仍然会影响您的 Web 角色,但它不会执行 mvc/asp.net 管道,而是 Azure 将请求路由到 CDN 以获取内容。此配置是此 的关键
    • 这很有帮助,但在最初的问题中,问题是当我们将图像上传到 CDN 时,当我们尝试从 CDN 查看文件时,它返回 404 至少 15 分钟,然后它开始显示文件.. 这对于我的用例是不可接受的,这是一个自定义构建的 CMS,用户希望文件在单击保存后立即生效。
    • 我对此做了一些测试。为新创建的 CDN 加载第一个图像需要将近 15 到 30 分钟。然后它工作正常。我用geopeeker.com站点测试了来自不同位置的图片链接,看起来都不错。一旦我将图像上传到我的存储中,它就会出现在 CDN url 中。
    • 您将dynamic contentnew but static content 混淆了。动态内容是相同 URI 更改内容的地方(例如 news.html 的内容)。静态内容是相同的 URI 提供相同的位(例如 image.jpg)。
    【解决方案4】:

    CDN 使用户能够从地理上离用户最近的 CDN-POP 获取内容,从而降低读取延迟。 如果没有 CDN,每个请求都会到达源服务器(在您的情况下为 Azure 存储)。 CDN 提供的低延迟是在缓存命中时实现的。在缓存未命中时,CDN-POP 将从源服务器获取内容,从而减少 CDN 提供的延迟优势。缓存命中通常取决于内容是静态的(导致缓存命中)还是动态的(导致缓存未命中)及其受欢迎程度(热门对象导致缓存命中)。

    您是否选择使用 CDN 取决于 a) 您的文件是静态的还是动态的,如果是动态的,那么使用 CDN 的好处会更低 b) 低延迟是否对您的应用程序很重要以及 c) 请求率:如果请求数量较少,您的文件可能会被缓存,因此 CDN 可能没有那么有用,并且 d) 您是否有很高的可扩展性要求。注意,Azure 存储有以下scalability limits。如果您的应用程序超出了 Azure 存储的可扩展性限制,那么建议使用 CDN

    【讨论】:

    • 我知道使用cdn的好处和原因,但是想象一下,用户将图像上传到我的站点,然后我将其放入azure存储中,在我的html页面上,我将放置图像的src从 CDN 提供服务。但是用户要等到 15 分钟才能看到它,并且 15 分钟的“时间滞后”没有记录,因此我什至无法尝试做批处理工作来更新 url。此外,正如您所提到的,Azure 存储在吞吐量等方面存在限制。实现这种相当常见的场景的更好方法是什么?
    猜你喜欢
    • 2016-09-12
    • 2014-11-19
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 2020-06-09
    • 2021-01-01
    • 2018-07-09
    • 1970-01-01
    相关资源
    最近更新 更多