2010-08-17 42 views
4

我有一个WCF服务,我打电话给使用jQuery 1.4.2(实际上每秒钟轮询它)。随着时间的推移,阿贾克斯呼叫缓慢。对方法的初始请求大约需要30毫秒左右,但我可以使用Opera的DragonFly观看大约半小时(也可以使用Chrome的工具进行验证),但我的请求时间会慢慢增加。在大约半小时内,我从约30ms的请求时间到约300ms的请求时间。稳步减缓AJAX调用WCF服务从javascript

起初我还以为是我写的服务,所以我改变了方法只返回一个值,不计算或任何东西:

public int DoSomething(int id) 
    { 
     return 0; 
    } 

我很惊讶地看到,该行为是相同的:请求时间稳步增加。我知道这非常含糊,但任何指向这样的问题的指针?如果它不是我的方法,谁是可能的候选人?

进出口使用.NET 3.5SP1 & C#

编辑:为了澄清,我使用jQuery的$就方法来拨打电话,并且其是减缓实际的请求时,反应总是差不多〜0ms。

编辑2:我已经修复了评论中提到的内存问题,与Jon Hanna &仍然是我的请求时间增长。

+0

所以这听起来像你排除了事物的服务方面。你的jQuery代码是什么样的?你是否获得了返回值并将DOM元素附加到页面上,添加了新的动画,设置了定时器等?听起来像客户端代码可能是问题。 – 2010-08-17 20:38:10

+0

其实际的ajax请求正在减慢,而不是响应。 – 2010-08-17 20:45:34

+0

你可以发布你的jQuery ajax代码,以及你如何处理响应?如果您的ajax调用中有大量选择器,并且您在成功操纵DOM时,可能会降低提出请求的速度(并解释为什么响应始终为0ms)。 – 2010-08-18 02:04:31

回答

0

你看过浏览器正在消耗的内存吗?值得关注这个问题,看看它是否随着时间的推移而增加。

你会想要一个全新的浏览器(在你的YouTube视频中有你最喜爱的音乐家的流行点击在不同的标签页中打开后,没有点测量),它可以爬过任何初始的内存抓取,然后运行你的脚本。

如果这是一个问题,然后看看汇集您的JavaScript对象,特别是XHR本身,以确保事件不绑定到处理程序,然后忽略,并且您不是不断地添加到DOM的主机文件。

+0

浏览器内存正在增加,但我不知道它的重要性。约35-40分钟〜3.5MB。 jQuery是使用$ .ajax方法控制实际ajax请求的人。 – 2010-08-17 20:48:13

0

它是WCF的本质,它比任何其他方法都要慢。 试试.ashx

它与普通的aspx页面类似,但ashx没有html页面。只是纯粹的代码背后。非常适合用查询字符串执行url并以字符串或json形式返回。

http://localhost/test.ashx?get=test

在ASHX 回报 '通过';

我通常jQuery.load使用它( 'test.ashx?得到=测试',函数(...){})用这种方法,我不担心$就废话了