gpt4 book ai didi

azure - 最大限度降低 Azure 存储出站数据成本的策略

转载 作者:行者123 更新时间:2023-12-04 13:38:40 24 4
gpt4 key购买 nike

我正在构建一个网站(除其他外)允许用户通过 Web API 上传照片。用户图像将存储在 azure 存储 blob 中,以显示在用户相册中,并与社交媒体共享。该网站将作为 azure 网站托管。我渴望最大限度地降低数据传输成本。据我所知, azure 网站和表/blob 存储之间的数据传输不会产生数据传输费用(因为它不被视为“出站”),而从 azure 网站外部请求的数据则会产生数据传输费用。针对这一点,我有两种将图像暴露给浏览器的策略:

1.) 通过 Azure 存储中图像 blob 的 URI,例如使用本地存储帐户 http://ipv4.fiddler:10000/devstoreaccount1/bcb2ad7581.jpg

2.) 通过 Web API 从存储中下载图像字节并返回它们。例如与本地主机 http://localhost:58559/api/image/bcb2ad7581.jpg

这些是我的假设。直接存储访问(上面的方法 1)效率更高。通过 web api 访问图像(上面的方法 2)一定会产生直接访问不会产生的开销,对吧?每个 Web api 请求必须消耗一个 ASP .NET 线程加上 CPU 周期。对于处理的每个 Web API 图像请求,都会减少对站点上无法且必须排队的其他 Web API 资源的请求。另一方面,共享图像的任何外部站点都会为每个图像请求增加数据传输成本(以及其他成本);如果通过方法1访问。

所以我的策略是通过直接链接到存储(方法 1)来访问网站内的图像。当用户打开相册时,所有标签的 src 属性中都有 azure blob uri。但是,当用户单击 Facebook 图标进行共享时,我将通过 Web api 提供图像的链接(方法 2)。我意识到用户可以使用“PinIt”按钮等插件绕过所有这些,但这没关系。

我只是在学习这些东西,所以我可能还很遥远。我关于出站传输费用未应用于 azure 网站的说法是否有误?我不这么认为,但至少可以说,整个定价模型令人困惑。

正在从带有标签和src属性的浏览器html页面访问blob存储,被视为出站数据传输;即使 html 页面来自 azure 网站域?我的意思是只有当服务器端代码访问存储而不是html客户端时才免费吗?

通过方法 2 节省的数据传输成本(如果确实有的话)是否可以通过与 Web API 方法相关的不同成本(如带宽成本)简单地抵消?

我对直接访问 blob 存储的性能优势的看法是否错误,或者对 Web API 请求的开销的看法可能有误?

现在还处于设计的早期阶段,所以如果有必要的话我可以放弃 Azure。但我宁愿不这样做,因为我认为这就是我正在寻找的。我不想不劳而获,并且很乐意为我所使用的服务付费。当然,我不希望我的无知让我付出代价。

在这方面我需要您的建议,并衷心感谢您的帮助。

最佳答案

回答您的问题:

Am I wrong about outbound transfer costs not being applied to azure web sites?

遗憾的是,是的:)从 Azure 数据中心 (DC) 传出的任何数据都会产生出站传输成本,其中包括通过网站提供的数据。

Is accessing blob storage from a browser html page with tag and src atribute, considered outbound data transfer; even if the html page comes from an azure website domain? I mean is it only free when the server side code accesses the storage, not the html client?

是的。请记住,浏览器正在使用位于 Azure DC 外部的数据。

Is any data transfer cost saved via method 2 (if indeed there is one), simply cancelled out by a different cost associated with the web api method (like bandwidth cost)?

没有。因为数据最终会流出Azure DC(无论是直接通过存储还是通过Web api)。

Am I wrong about the performance benefit of direct access to the blob storage, or possibly wrong about the overhead of the web api requests?

通过提供对 Blob 存储的直接访问,与通过 Web API 传输数据相比,您肯定会获得更多的性能优势。另外,您还会增加延迟。

解决方案推荐

对于您的申请,我可以建议您查看 Shared Access Signature Azure Blob 存储提供的功能。我相信这将显着提高您的应用程序的性能。

对于上传,您可以创建一个具有上传权限的 SAS URL,并让您的 Web 应用程序直接上传 Blob 存储中的文件。这样上传数据就不会通过您的服务器进行路由。我写了一些相同的博客文章,您可能会觉得有用:

http://gauravmantri.com/2013/02/16/uploading-large-files-in-windows-azure-blob-storage-using-shared-access-signature-html-and-javascript/

http://gauravmantri.com/2013/12/01/windows-azure-storage-and-cors-lets-have-some-fun/

要下载图像,请再次让 Web API 返回 SAS URL,而不是从 Blob 存储中读取图像数据,然后将该数据流回客户端浏览器。

关于azure - 最大限度降低 Azure 存储出站数据成本的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28088181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com