Memory leaks Ajax驱动页面上的Knockout.js绑定

Memory leaks Ajax驱动页面上的Knockout.js绑定,memory-leaks,knockout.js,resource-cleanup,Memory Leaks,Knockout.js,Resource Cleanup,真的开始喜欢KnockoutJs了吗(http://knockoutjs.com). 我的大多数web应用程序都是ajax驱动的。整个站点被加载,然后从一个链接到另一个链接,我们只需通过ajax调用更改主体内容 当ajax返回新的主体内容时,我可以进行击倒绑定。没问题。当我链接到下一个页面时(只是替换主体的ajax调用)。我认为那些被击倒的建筑仍然在内存中,但由于dom已经改变,它们并没有真正的边界。关于这个话题的几个问题 如果下一页没有任何敲除,那么让敲除对象停留在内存中真的有那么糟糕吗?更好

真的开始喜欢KnockoutJs了吗(http://knockoutjs.com). 我的大多数web应用程序都是ajax驱动的。整个站点被加载,然后从一个链接到另一个链接,我们只需通过ajax调用更改主体内容

当ajax返回新的主体内容时,我可以进行击倒绑定。没问题。当我链接到下一个页面时(只是替换主体的ajax调用)。我认为那些被击倒的建筑仍然在内存中,但由于dom已经改变,它们并没有真正的边界。关于这个话题的几个问题

  • 如果下一页没有任何敲除,那么让敲除对象停留在内存中真的有那么糟糕吗?更好的是,有没有办法重置(清除)击倒对象

  • 当我从一个有敲除绑定的页面转到另一个有敲除绑定的页面时,只需再次调用ko.applyBindings()清除旧内容并重新绑定新内容?(再一次,当我说从一个页面转到另一个页面时,我只是用ajax调用重新加载正文)

  • 敲除是否有任何“活动”绑定。有点像jQuery的实时绑定?通过这种方式,可以提前加载淘汰,然后不必在内容更改之间重新应用淘汰

  • 总的来说,我在寻找如何在浏览器不在页面之间刷新的应用程序中最好地在页面之间使用knockout的建议

    提前谢谢你的帮助

    1) 如果下一页没有任何敲除,那么让敲除对象停留在内存中真的有那么糟糕吗?更好的是,有没有办法重置(清除)击倒对象

    不,没那么糟;但是如果你真的想清理一下,你可以打电话


    2) 当我从一个有敲除绑定的页面转到另一个有敲除绑定的页面时,只需再次调用ko.applyBindings()清除旧内容并重新绑定新内容?(再一次,当我说从一个页面转到另一个页面时,我只是用ajax调用重新加载正文)

    视情况而定

    首先,作为:

    不能在同一个DOM节点上多次调用
    applyBindings()

    根据经验,我知道在同一个DOM节点上多次调用
    ko.applyBindings()
    将导致内存泄漏。[如果需要,请致电。]

    OTOH,如果您没有在同一DOM节点上多次调用
    ko.applyBindings()
    ,那么您应该可以:

    KO将在添加/删除节点时进行一些清理。这种情况通常发生在重新渲染模板时


    3) 敲除是否有任何“活动”绑定。有点像jQuery的实时绑定?通过这种方式,可以提前加载淘汰,然后不必在内容更改之间重新应用淘汰


    据我所知并非如此,但如果我正确理解了您的问题,您不应该需要任何本机淘汰功能来实现您需要的功能。您应该能够使用jQuery的方法将其连接起来(因为已经弃用)。

    这个问题可能有助于重置绑定: