代码之家  ›  专栏  ›  技术社区  ›  Mike_G

稳定地减缓javascript对WCF服务的ajax调用

  •  4
  • Mike_G  · 技术社区  · 14 年前

    我有一个WCF服务,我正在使用jQuery 1.4.2调用它(实际上每隔一秒钟左右轮询一次)。随着时间的推移,ajax调用速度会变慢。对一个方法的初始请求大约为30毫秒,但在大约半小时的时间里,我可以使用Opera的DragonFly(也可以通过chrome的工具进行验证)观看我的请求时间慢慢增加。在大约半个小时内,我从约30毫秒的请求时间变为约300毫秒的请求时间。

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

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

    我很惊讶地看到,行为是一样的:请求时间稳步增加。我知道这很模糊,但有没有解决类似问题的建议?如果不是我的方法,谁是可能的候选人?

    我正在使用。NET3.5sp1&C#

    编辑: 为了澄清,我使用了jQuery的$。ajax方法进行调用,实际请求时间变慢,响应时间通常约为0毫秒。

    编辑2: 我已经修复了Jon Hanna&但我的请求时间仍在增长。

    2 回复  |  直到 14 年前
        1
  •  0
  •   Jon Hanna    14 年前

    你看过浏览器在运行时消耗的内存了吗?也许值得关注一下,看看它是否会随着时间的推移而增加。

    你会想要一个新的浏览器(在不同的标签页上打开你最喜欢的音乐家的热门歌曲的YouTube视频后,没有必要进行测量),它可以爬过任何初始内存抓取,然后运行你的脚本。

    如果这是一个问题,那么看看如何将javascript对象(尤其是XHR本身)合二为一,以确保事件不会绑定到处理程序,然后被忽略,并且不会不断地添加到宿主文档的DOM中。

        2
  •  0
  •   Bonshington    14 年前

    WCF的本质是它比任何其他方法都慢。 你试试看。处理程序

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

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

    在阿什 返回“通过”;

    我通常在jQuery中使用它。加载('test.ashx?get=test',函数(…){}使用这种方法,我不必担心美元。阿贾克斯不再是废话了