2010-09-25 46 views
1

我有两个不同的类,我正在测试发送文件到浏览器。 第一个是在http://pastebin.org/1187259使用范围特定的标题,以提供恢复asp.net c#发送二进制文件到客户端速度问题

第二个是在http://pastebin.org/1187454使用块读取发送大文件。
两者都可以正常工作。在下载速度方面,第一个比第二个慢。第一个我不能超过80KB /秒,第二个我可以尽可能快地获得。

我做了很少的测试,结果是一样的。这是一种错觉还是第一个有什么减慢下载速度?

我还注意到,第一个似乎阻止其他请求。例如,如果我从服务器请求一个文件与第一个服务器将不会响应我的其他请求,直到下载完成。即使我请求不同的页面。如果我从不同的浏览器打开不同的会话,它不会这样做。

谢谢。

回答

1

最后!我设法通过将EnableSessionState =“ReadOnly”添加到下载页面来解决此问题。

http://www.guidanceshare.com/wiki/ASP.NET_2.0_Performance_Guidelines_-_Session_State

“使用只读属性时,你可以

对于那些只需要读取访问会话数据,考虑的EnableSessionState设置为只读网页。

为什么

页面请求使用会话状态的内部使用ReaderWriterLock对象来管理会话数据,这允许在不锁定的情况下同时发生多个读取操作。 ock更新会话状态,所有读取请求都被阻止。通常每次请求都会对数据库进行两次调用。第一个调用连接到数据库,将会话标记为锁定,并执行该页面。第二次调用写入任何更改并解锁会话。通过将EnableSessionState设置为ReadOnly,可以避免阻塞,并可以减少对数据库的调用,从而提高性能。 “

相关问题