Silverlight:StreamReader缓慢运行浏览器缓存

时间:2012-02-27 13:17:52

标签: silverlight caching locking streamreader

在SL4应用程序中,我使用HttpWebRequest在同一时间(+ ~3秒)向服务器执行大量请求(30)。结果,我收到相同的响应计数并开始处理流

HttpWebRequest request = (HttpWebRequest) asynchronousResult.AsyncState;
HttpWebResponse response = (HttpWebResponse) request.EndGetResponse(asynchronousResult)
using (var stream = new StreamReader(response.GetResponseStream()))
{
    var str = stream.ReadToEnd();
    var doc = XDocument.Parse(str);
}
  1. 收到所有响应(服务器返回304 - 未修改)
  2. 为每个响应程序创建新线程(因为asynchronusResult)。
  3. 当我尝试从流中获取数据时,当stream.ReadToEnd()方法工作时需要花费很多时间。我现在不在ReadToEnd()内部,但似乎流读取在一个线程中执行或发生任何锁定。有任何想法吗?? 为什么会这样?除了这种方法之外,所有东西都封装在不同的线程中并且工作得很快。

1 个答案:

答案 0 :(得分:0)

据推测,您正在使用浏览器http堆栈,在这种情况下,您的浏览器几乎肯定会限制您可以同时对给定子域进行的连接数量 - 在许多浏览器中这是两个。

一个常见的伎俩是use multiple sub domains来提供内容。