记一次Ajax请求MVC调优
Posted 我有我奥妙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次Ajax请求MVC调优相关的知识,希望对你有一定的参考价值。
问题描述
ASP.NETMVC项目,编辑页面赋值操作,ajax请求很慢。
对同一个控制器有2个请求
一个为获取该表的树形结构数据(绑定下拉框)
一个为获取某实体的单条记录(编辑操作)
排查过程
数据库
该页面的表只有12个字段,且数据也只有98条,
直接在数据库中执行查询语句也很快,一般在0.03s左右,所以不是数据库方面的问题。
html
百度搜到的文章 https://segmentfault.com/q/1010000004712152
里面提到了几个点
(1)DOM操作会很慢。
于是将页面所有的DOM赋值操作都注释,但没起效果。
(2)发起异步请求
查看ajax请求,都是异步请求,没有用。
(3)分析HTTP请求时间
查看HTTP过程,时间都耗在Waiting (TTFB)上,所以问题好像是在服务器端响应的处理上。
解决办法
经过排查,怀疑问题在服务器端响应的处理上,
于是搜索:ASP.NETMVC响应ajax请求的时间限制
搜索到的文章提示了:Session锁,感觉找到问题所在了。
处理办法
Controller添加[SessionState(SessionStateBehavior.ReadOnly)] 的特性
注意:添加特性后,该Controller都不能修改Session了,只能读取
相关文章
https://www.cnblogs.com/han2017/p/9603501.html
https://www.cnblogs.com/OpenCoder/archive/2010/01/10/1643659.html
https://www.cnblogs.com/fanqie-liuxiao/p/5702633.html
http://www.cocoachina.com/articles/97693
以上是关于记一次Ajax请求MVC调优的主要内容,如果未能解决你的问题,请参考以下文章
MVC4 AspNet MVC下的Ajax / 使用JQuery做相关的Ajax请求