解决ASP.NET MVC间歇性响应缓慢

简介: 解决ASP.NET MVC间歇性响应缓慢

经查看发现好多地方设置了 $.ajaxSettings.async = false;,方法执行完毕后没有设置异步。

全部修改之后,发现请求还是慢,打断点发现控制台显示耗时几十秒的请求,实际执行一两秒左右,前端同时发送5个Ajax请求,结果却是同步返回的,或者可以说后端做了同步的处理。


.net MVC请求响应慢,也许你的项目同一个用户的请求都是同步的


一. 使用Session后同步的原因


其实原因很简单,试想一下,如果1个以上请求同时修改Session的值,那么Session的值就会有不确定性,这个应该很好理解;为了保证Session值的准确性,只能同一个Session加上锁同步操作;

对于这个问题,写到这已经很明显了;Session的锁默认对同一个Session做了同步处理;不管前端如何异步请求,怎乃后端一直同步;


二. 解决Session同步执行方法


1. 使用 Attribute [SessionState(SessionStateBehavior.ReadOnly)]

[SessionState(SessionStateBehavior.ReadOnly)]
    public class HomeController : Controller
    { 
        public ActionResult About()
        {
            return View();
        } 
        public ActionResult TestAjax()
        {
            Thread.Sleep(1500);
            return Json(new { Code = 1, LoginId = Session["LoginId"] });
        }
    }


只需要在Controller上加上特性SessionState,设置值为ReadOnly;这样同一个用户的请求也可以是异步的;


在一般的项目开发中,Session修改添加操作会在用户登录的时候使用,那么在除了登录的请求中加入Session ReadOnly,就会根本解决问题;或者笼统的说,在不需要修改Session的请求中加入Session ReadOnly,你的项目性能会有很大的提升;


这种方式对于老项目存在同样的问题,或者习惯使用Session的用户是不错的选择;


2. 使用其他方式代替Session存储


这里不做列举。


三. 总结


1、如果你的项目正在使用Session,而且并未设置Session ReadOnly,简单的设置会对你项目性能有很大的提升;


2、asp.net webform存在同样的问题;


3、新项目选择非Session也是不错的选择;


4、从asp.net core 2.1开始,使用Session并不会有此问题,同时兼顾了Session的使用习惯也不会导致同步的性能问题;asp.net 2.1的解决方式类jwt方式;


5、为了简化会话状态,ASP.NET 对一个给定的会话在某一时刻只处理一个查询。如果客户端形成了多个重叠的请求,他们将被排成队列,并由服务器依序处理。其好处是不需要担忧多个请求对同一数据进行修改的情况,缺点是得不到所希望的请求吞吐量。


程序性能低下的主要原因是开发人员技术参差不齐。。。。

相关文章
|
2月前
|
JSON 前端开发 Java
Spring MVC——获取参数和响应
本文介绍了如何在Spring框架中通过不同的注解和方法获取URL参数、上传文件、处理cookie和session、以及响应不同类型的数据。具体内容包括使用`@PathVariable`获取URL中的参数,使用`MultipartFile`上传文件,通过`HttpServletRequest`和`@CookieValue`获取cookie,通过`HttpSession`和`@SessionAttribute`获取session,以及如何返回静态页面、HTML代码片段、JSON数据,并设置HTTP状态码和响应头。
60 1
Spring MVC——获取参数和响应
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
48 7
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
75 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
56 0
|
4月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
4月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
143 0
|
6月前
|
JSON 前端开发 Java
【JavaEE进阶】 关于Spring MVC 响应
【JavaEE进阶】 关于Spring MVC 响应
62 3
|
6月前
|
前端开发
Spring-MVC的数据响应-19
Spring-MVC的数据响应-19
|
6月前
|
JSON 前端开发 Java
spring mvc 请求与响应
spring mvc 请求与响应
31 0
|
7月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
212 0