- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个网站(除其他外)允许用户通过 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/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/
我在使用带有 vector STL 的迭代器时遇到了这个错误。 代码:- #include #include void print_vec(std::vector vec) { auto
JAVA:两个引用“p”&&“pp”之间有区别吗? PrintStream p = new PrintStream(System.out); p.println("lol");
我尝试从主分支中拉出,但收到错误消息: $ git --no-optional-locks -c color.branch=false -c color.diff=false -c color.sta
我面临着一个让我抓狂的问题! 我有一个函数,这个: void load_weapons3(t_env *e, char *name, int x, t_weapon *w) { char
我正在尝试使用 CUDA 中的最小值、最大值、总和和平均值实现并行归约。 这是我目前的主要代码片段。 int main() { const auto count = 8; const
我知道 double free 或 corruption 错误通常是对 big 3 的违规,但在这种情况下,我找不到违规发生的地方。我有一个复制构造函数、析构函数和赋值运算符,适用于任何处理指针的东西
GTK+ 中的“focus”和“focus-in(out)-event”信号有什么区别?哪个先发射?它们与键盘(TAB)和鼠标点击有什么关系。他们互相依赖吗? 我问这个是因为我想在顶层窗口中跟踪当前聚
*** glibc detected *** /home/ghoshs/workspace/Simulator/Debug/Simulator: double free or corruption (
#include #include #include #include using namespace std; #define MAX_WEIGHT 1000000 class Set {
我在服务器上有两个分支一个叫 R2 的分支和一个叫 DEV 的分支我无意中登录了错误的服务器,进入了存储库并执行了GIT pull 源开发但是存储库在 R2 上。所以我意识到我的错误然后尝试通过做一个
我有一个包含循环的大约 1000 个顶点和 3000 个边的有向图。 我试图从给定的顶点找到所有下游(出)路径。 使用以下 Gremlin 查询时 g.V(45712).repeat(out().si
使用 Delphi XE 2 我试图确定缩放方向以将缩放效果应用于图像(TImage),但没有找到执行此操作的函数,并且图像的 OnGesture 事件中的 EventInfo 属性没有此信息. 我见
我正在尝试创建一个 Zoom_image 函数,它使用离散傅里叶变换来缩放灰度图像。如果图像大小小于或等于 4*4 但大小增加,我包含的代码可以工作。它给出“双重释放或损坏(出)中止(核心转储)”错误
当我执行 popAll 函数时,出现以下错误: 双重释放或腐败(出)中止(核心转储) 我想我已经将错误来源缩小到了这个函数。 IntegerStack 是我制作的一个简单的 ADT,其中包含一个名为
我有网络开发背景,我正在尝试创建类似于 this technique 的东西适用于 iOS(使用 Cocoa/Obj C)。我在谷歌搜索资源时遇到了很多困难,因为 iOS 中的“视差”往往指的是 iO
我想实现一个 faceted search对于我的一个项目。我正在使用 PHP5、Mysql 和 Symfony 1.4。显然社区指向Apache Solr这似乎正是我想要完成的。 问题是该网站将在不
我知道有 questions floating around当您没有提供明确的分支名称时,关于来自特定分支的 git pull,但是我想知道即使用户确实指定了不同的分支,是否也可以强制 pull 分支
我正在尝试将我的更改推送到 NAS 上的存储库。它以我无法理解的方式失败。 documentation声明默认情况下 push 仅适用于快进更新。很公平。所以我做了一个 git pull(我的 Rem
我刚开始使用 Oracle 的 Coherence 缓存,我注意到这一点:如果我在缓存中放入一个 ConcurrentHashMap 对象,当我检索它时,我可以看到它被转换为一个普通的 HashMap
我尝试创建一个连接到数据库的线程,从那里获取一些数据并打印到控制台。问题是当该线程完成时抛出异常: 双重免费或腐败(出局)中止(核心转储) 我尝试使用 sqlite3 和 pthread,但这两个并不
我是一名优秀的程序员,十分优秀!