10
我刚刚发现了为什么所有ASP.Net网站都运行缓慢的原因,并且我正在尝试解决该问题。
我刚刚发现,ASP.Net Web应用程序中的每个请求都在请求开始时获得会话锁,然后在请求结束时释放它! 如果像我刚开始那样对您失去影响,那么这基本上意味着以下几点: 每当ASP.Net网页加载时间很长时(可能是由于数据库调用速度慢或其他原因),并且用户由于厌倦了等待而决定要导航至其他页面时,它们不能!ASP.Net会话锁定会强制新页面请求等待,直到原始请求完成其痛苦的缓慢加载为止。啊 每当UpdatePanel加载缓慢时,用户决定在UpdatePanel完成更新之前导航到其他页面...它们不能!ASP.net会话锁定会强制新页面请求等待,直到原始请求完成其痛苦的缓慢加载为止。双重Arrrgh! 那有什么选择呢?到目前为止,我想出了: 实现ASP.Net支持的自定义SessionStateDataStore。我还没有找到太多可以复制的东西,而且似乎风险很高,很容易弄乱。 跟踪所有正在进行的请求,如果一个请求来自同一用户,则取消原始请求。似乎有些极端,但它可以工作(我认为)。 不要使用会话!当我需要某种状态给用户时,我可以只使用Cache以及经过身份验证的用户名上的关键项或类似的东西。再次看起来有点极端。 我真的无法相信ASP.Net Microsoft团队会在4.0版的框架中留下如此巨大的性能瓶颈!我是否缺少明显的东西?在会话中使用ThreadSafe集合有多困难?