0

背景:

我正在编写一个 RouteHandler 作为我的 MVC3 解决方案的一部分。它的目的是从我的云存储中获取图像和文件,并将它们传送到浏览器,同时屏蔽云存储 url。

因此,“媒体”子域中的所有内容都会被路由到我的 MediaRouteHandler ,在那里我实现了获取图像的逻辑。

我正在努力获得 HttpWebRequest 的异步实现。充其量它的行为不规律。有时正确地降低图像有时不能。

问题:

所以,我的问题是。

标准浏览器是同步还是异步加载图像?或者我是否正在尝试做一些浏览器通常不会做的事情(而且只是在浪费我的时间)。

即,如果浏览器获取图像的默认方式是来自同步线程,那么我很高兴这样做。

是这样吗?

谢谢。

一点测试:

这是我的同步路由处理程序的结果。您会看到图像请求重叠,并且通过使用提琴手来模拟调制解调器下载速度,我可以看到它们同时以不同的速度下降。

同步下载速度

4

2 回答 2

1

浏览器异步加载图像,但实际上异步加载的主要原因不是阻塞线程(以及一些并行性)。如果您真的在处理服务器端异步请求,请尝试在某个后台线程中将所有调用包装为同步。这样您就不会阻塞主线程并仍然同步加载图像。我不确定这种情况是否会在 ASP.NET MVC 中正常工作。;]

于 2012-08-13T22:53:42.067 回答
1

如果一张一张地请求图像,那么实际上每个都MediaRouteHandler在自己的线程中运行。因此,您可以简单地HttpWebRequest为每个图像执行同步,因为没有任何内容被阻止(客户端浏览器无论如何都需要完整的图像文件)。

请注意,由于性能优势,异步调用值得考虑。如果图像数据很长 - 您可以开始将数据推送到客户端浏览器,尽管尚未从云存储中下载全部数据。

于 2012-08-13T23:04:09.197 回答