ASP.NET页面两次回发点击后出现延迟问题求助
检查会话状态与应用池回收
本地用InProc会话模式通常顺畅,但发布到服务器后,若应用池频繁回收,会触发会话重建、页面重新编译,直接引发延迟。可尝试将会话模式改为StateServer或SQLServer,同时调整应用池回收时间间隔,避开业务高峰时段触发回收。排查会话锁阻塞
ASP.NET默认会话是独占式访问,第一个回发请求未完成时,第二个请求会被阻塞等待会话释放。如果页面不需要修改会话数据,可在页面指令中添加EnableViewState="false"测试,若延迟消失,再逐个排查控件的视图状态,禁用非必要的视图状态。验证视图状态与请求数据量
即便按钮逻辑简单,若页面整体视图状态过大,回发时会传输大量冗余数据导致延迟。可临时在页面指令中设置EnableViewState="false"测试,若延迟消失,再逐个排查控件的视图状态,禁用非必要的视图状态。检查服务器资源占用
登录服务器查看CPU、内存、磁盘IO指标,两次回发后是否出现资源耗尽的情况。比如存在未释放的数据库连接、后台定时任务抢占资源,或是服务器硬件性能不足,都会导致请求处理缓慢。调整IIS请求队列配置
IIS应用程序池的请求队列长度若设置过小,当请求量累积时会出现排队等待。打开IIS管理器,找到对应应用程序池的高级设置,适当调高队列长度(默认值1000,可根据服务器性能调整)。排除网络层面问题
在服务器本地直接访问页面进行回发测试,若延迟消失,说明是客户端与服务器之间的网络存在丢包、带宽限制等问题;若仍有延迟,则聚焦服务器端的配置与代码问题。
内容的提问来源于stack exchange,提问作者Shomaail

