我刚刚发现ASP中的每个请求。网络web应用程序在请求开始时获得一个会话锁,然后在请求结束时释放它!
如果你不明白这其中的含义,就像我一开始一样,这基本上意味着:
任何时候ASP。Net网页需要很长时间来加载(可能是由于缓慢的数据库调用或其他原因),用户决定他们想导航到另一个页面,因为他们厌倦了等待,他们不能!Net会话锁迫使新的页面请求等待,直到原始请求完成其令人痛苦的缓慢加载。Arrrgh。
任何时候UpdatePanel
加载缓慢,并且用户决定在UpdatePanel
完成更新之前导航到另一个页面…他们不能! ASP。Net会话锁迫使新的页面请求等待,直到原始请求完成其令人痛苦的缓慢加载。双Arrrgh !
那么有什么选择呢?到目前为止,我想出了:
SessionStateDataStore
。网络支持。我还没有找到太多可以复制的,而且这似乎风险很高,很容易搞砸。Cache
,以及经过身份验证的用户名上的关键项,或诸如此类的东西。这看起来有点极端。我真不敢相信ASP。Net微软团队在4.0版本的框架中留下了如此巨大的性能瓶颈!我是不是遗漏了什么明显的东西?为Session使用ThreadSafe
集合有多难?