加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

最小化Azure存储出站数据成本的策略

发布时间:2020-12-16 03:38:19 所属栏目:asp.Net 来源:网络整理
导读:我正在建立一个网站(除其他外)允许用户通过网络API上传照片.用户图像将存储在azure存储blob中以显示在用户相册中,并与社交媒体共享.该网站将作为一个天蓝色的网站托管.我渴望尽量减少数据传输成本.据我所知,天蓝色网站和桌面/ blob存储之间的数据传输不会导
我正在建立一个网站(除其他外)允许用户通过网络API上传照片.用户图像将存储在azure存储blob中以显示在用户相册中,并与社交媒体共享.该网站将作为一个天蓝色的网站托管.我渴望尽量减少数据传输成本.据我所知,天蓝色网站和桌面/ blob存储之间的数据传输不会导致数据传输费用(因为它不被视为“出站”),而且从天蓝网站外部请求的数据也是如此.为此,我有两种将图像暴露给浏览器的策略:

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”按钮等插件来绕过所有这些,但这没关系.

我只是在学习这些东西,所以我可能会离开.
我是否错误地将出境转移费用应用于天蓝网站?我不认为我是,但至少可以说整个定价模式令人困惑.

从带有标记和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传输数据,您肯定会获得更多性能优势.另外,您还会增加延迟.

解决方案建议

对于您的应用程序,我建议您查看Azure Blob Storage提供的Shared Access Signature功能.我相信这将显着提高您的应用程序的性能.

对于上传,您可以创建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存储中读取图像数据,然后将该数据流回客户端浏览器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读