当前位置:编程学习 > C#/ASP.NET >>

ASHX 获取客户端的post请求超级慢是什么原因~~

ASHX页面处理客户端发过来的POST 请求 ,
程序处理的第一句话 
if (context.Request["mobiledata"] == null)
{
     context.Response.ContentType = "text/plain";
      context.Response.Write("yyy");
}
发现返回返回的特别慢,主要是什么原因呢?context.Request["mobiledata"] 这句话获取速度慢是由于什么原因呢?

服务器的内存是8G ,客户端的POST过来的数据都比较大,一秒过来的数据貌似也不怎么多,怎么会那么大的延迟呢(延迟50S)?  --------------------编程问答-------------------- 顶啊 ~~~~~ --------------------编程问答-------------------- 不可能,ASHX的处理要比aspx快很多 --------------------编程问答--------------------
引用 2 楼 liuchaolin 的回复:
不可能,ASHX的处理要比aspx快很多

解析时间基本忽略不计,
我分段测试了,if (context.Request["mobiledata"] == null) 花费的时间最多。。。。不知道是什么原因啊 ~~快疯了。。 --------------------编程问答-------------------- 那就换成下边这个试试
context.Request.Form["mobiledata"] --------------------编程问答-------------------- 或者不判断,直接
string _mobiledata="";
try{
  _mobiledata=context.Request.Form["mobiledata"]
} --------------------编程问答--------------------
引用 4 楼 liuchaolin 的回复:
那就换成下边这个试试
context.Request.Form["mobiledata"]


用FORM 试了,还是一样。 --------------------编程问答--------------------
引用 5 楼 liuchaolin 的回复:
或者不判断,直接
string _mobiledata="";
try{
  _mobiledata=context.Request.Form["mobiledata"]
}


服务器执行了这一句话

     if (context.Request.Form["mobiledata"] != null)
        {


            context.Response.ContentType = "text/plain";
            context.Response.Write("yyy");

        }
        else
        {
            context.Response.ContentType = "text/plain";
            context.Response.Write("zzz");
        }
        
返回超级慢。把   if (context.Request.Form["mobiledata"] != null) 换成IF (1==1) 或者IF (1==0)
速度就正常了。。只能说明context.Request.Form["mobiledata"] 这句话有问题 。 --------------------编程问答-------------------- 读取数据是要也花时间的啊,你自己都说了

客户端的POST过来的数据都比较大,传是第一步,读是第二步 --------------------编程问答-------------------- 数据太大了自然需要时间来解析 --------------------编程问答--------------------
引用 9 楼 tcmakebest 的回复:
数据太大了自然需要时间来解析

没有解析数据,服务器只有一句话

服务器执行了这一句话

     if (context.Request.Form["mobiledata"] != null)
        {


            context.Response.ContentType = "text/plain";
            context.Response.Write("yyy");

        }
        else
        {
            context.Response.ContentType = "text/plain";
            context.Response.Write("zzz");
        }
        

访问速度还是慢的要死~~~ --------------------编程问答--------------------
引用 8 楼 liuchaolin 的回复:
读取数据是要也花时间的啊,你自己都说了

客户端的POST过来的数据都比较大,传是第一步,读是第二步


POST 过来1秒估计最多500K ,10个人,每人50K 数据,这个对服务器8G 内存来说应该不是问题吧。。
搞不明白为什么那么慢。。 --------------------编程问答-------------------- 客户端的POST过来的数据都比较大
------------------------------
数据量大就要看客户端的上行带宽给不给力了,类似于上传大文件的时候,点了提交,页面会静止一会儿,然后变白..等待响应一样 --------------------编程问答-------------------- 不稀奇,谁让你相信ajax站比标准站快的这种鬼话滴

ajax在整体响应上要比标准站慢10%左右,只是他把这10%分在很多小请求上,如果你整页完全用ajax那么整页的响应其实比标准站还慢 --------------------编程问答--------------------
引用 12 楼 dongxinxi 的回复:
客户端的POST过来的数据都比较大
------------------------------
数据量大就要看客户端的上行带宽给不给力了,类似于上传大文件的时候,点了提交,页面会静止一会儿,然后变白..等待响应一样


带宽完全没有问题,ping服务器的IP 地址,响应时间正常~~1-10MS内~~~ --------------------编程问答--------------------
引用 13 楼 wanghui0380 的回复:
不稀奇,谁让你相信ajax站比标准站快的这种鬼话滴

ajax在整体响应上要比标准站慢10%左右,只是他把这10%分在很多小请求上,如果你整页完全用ajax那么整页的响应其实比标准站还慢

没有用到AJAX ,客户端手机POST 一个数据过来。字符串的key 是mobiledata,我这边服务器用ASHX 页面接收解析。
现在的情况是不做解析,只做key的判断取值是否为空,整个网站的速度就超级的慢。ping 网站IP 速度正常~~~~ --------------------编程问答--------------------
引用 13 楼 wanghui0380 的回复:
不稀奇,谁让你相信ajax站比标准站快的这种鬼话滴

ajax在整体响应上要比标准站慢10%左右,只是他把这10%分在很多小请求上,如果你整页完全用ajax那么整页的响应其实比标准站还慢


这个应该与ajax无关吧,ASHX在处理客户端请求是要比aspx要快很多的 --------------------编程问答--------------------
引用 10 楼 u012252167 的回复:
Quote: 引用 9 楼 tcmakebest 的回复:

数据太大了自然需要时间来解析

没有解析数据,服务器只有一句话
访问速度还是慢的要死~~~

晕,不解析如何进行判断 null 啊 --------------------编程问答--------------------
引用 17 楼 tcmakebest 的回复:
Quote: 引用 10 楼 u012252167 的回复:

Quote: 引用 9 楼 tcmakebest 的回复:

数据太大了自然需要时间来解析

没有解析数据,服务器只有一句话
访问速度还是慢的要死~~~

晕,不解析如何进行判断 null 啊

post传过来的数据做提取,不是对传过来的字符串解析,

在获取context.Request.Form["mobiledata"]  整个对象上花费了太多时间。 --------------------编程问答-------------------- Form["xxx"] 就是已经返回数据了,还说什么没有解析啊,不如试一下 AllKeys 吧。 --------------------编程问答--------------------
引用 19 楼 tcmakebest 的回复:
Form["xxx"] 就是已经返回数据了,还说什么没有解析啊,不如试一下 AllKeys 吧。


你看下7 楼我说的,服务器就只执行了这一段代码~~~~ --------------------编程问答-------------------- ~~~~~~顶~~~~ --------------------编程问答-------------------- 把mobiledata换成其他key试试速度。 --------------------编程问答--------------------
引用 8 楼 liuchaolin 的回复:
读取数据是要也花时间的啊,你自己都说了

客户端的POST过来的数据都比较大,传是第一步,读是第二步

好了,什么都没改,把web程序换了个目录,马上好了。。。现在秒开。。接收解析插入全部正常了。。困扰了我一个多星期。。 --------------------编程问答--------------------
引用 23 楼 u012252167 的回复:
Quote: 引用 8 楼 liuchaolin 的回复:

读取数据是要也花时间的啊,你自己都说了

客户端的POST过来的数据都比较大,传是第一步,读是第二步

好了,什么都没改,把web程序换了个目录,马上好了。。。现在秒开。。接收解析插入全部正常了。。困扰了我一个多星期。。


大哥 到底咋回事 我这也出现这个问题了 我在前台用 ajax传过去一个json  接收超级慢 不知怎么回事 关键数据只有1行啊?   大哥你咋解决的??  跪求啊 ! --------------------编程问答-------------------- 把前台要查询的数据放到一般处理程序中来执行,传过来的只是单纯的参数就好,别把大数据也通过这个方式传过来。。自己感觉所需数据都从ashx中去查询一次要比这个快得多 --------------------编程问答--------------------
引用 25 楼 loveyan52152112 的回复:
把前台要查询的数据放到一般处理程序中来执行,传过来的只是单纯的参数就好,别把大数据也通过这个方式传过来。。自己感觉所需数据都从ashx中去查询一次要比这个快得多

我在前台用ajax返回的就一个json 也就1行。但form里还有其他控件 这有影响么? 另外我试验了一下 前台没有别的控件就超级快 这是怎么回事? 难道ashx页的content. Request.form["a"]  连同整个页面一起传回 然后检索 a么? 大家帮帮忙
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,