代码之家  ›  专栏  ›  技术社区  ›  Erx_VB.NExT.Coder

自动生成javascript以更新客户端html(与以前的html相比)?

  •  -3
  • Erx_VB.NExT.Coder  · 技术社区  · 15 年前

    你认为在编写一个框架时,mvc会比较它输出的最后一个html和我们想要输出的当前html,而不是发送整个html,找出改变了什么,并生成js代码来进行更新,与以前的html相比,这会很难吗?(假设客户端使用js没有手动更改任何内容)。。。也许是一个codeplex项目的想法?或者可能存在这样的情况?如果是的话,请告诉我。谢谢。

    4 回复  |  直到 15 年前
        1
  •  1
  •   Davy8    13 年前

    我认为这是一个有趣的问题,但没有一个实际的解决办法。。

    如果我理解正确,您希望将当前DOM中的diff生成为新的diff,并且希望在服务器上生成此更改脚本(这是javascript执行的客户端)。

    问题在于,为了让服务器生成diff,它需要知道以前的DOM结构是什么,以便与新的DOM结构(即新的html页面)进行比较

    1. The client sends back the full current page or some representation of it.
    2. The server stores a copy of the previous page.
    

    “1”的问题是,您已经否定了它对任何性能的好处。将整个页面发送回服务器与将其从服务器发送到客户端一样糟糕。通过AJAX请求整个页面体并替换它,可以达到同样的效果,而且实现起来也同样高效和简单。

    2的问题是现在服务器需要每个页面的x个副本,其中x是用户数。这是很大的内存,除非您将其持久化到磁盘,在这种情况下,对于每个请求来说,这是一个中等大小的磁盘写入。还有一个问题就是要弄清楚这些东西要保存多久,因为如果有人访问过这个网站一次,你就不想永远保存它。

    这两种情况下的性能都很可能会比仅仅获得完整页面更差,而且只会随着更多用户而变得更差。

    这还不包括真正做到正确的复杂性。我认为这是可以假设的,但除了作为一个有趣的实验,没有任何实际的好处会超过这样一个解决方案的成本,这就是为什么我怀疑你会找到一个。

        2
  •  0
  •   Community CDub    7 年前

    Caching in asp.net-mvc

    会更直接,对我来说也更有意义。

        3
  •  0
  •   Karsten    15 年前

    您需要在服务器上保存任何客户端的状态,并且不能在任何地方缓存任何响应,因为每个客户端都需要不同的响应。

    即使这是可能的,在“HTTP世界”imho中也没有意义。

        4
  •  0
  •   Anish    13 年前

    您试图为已解决的问题建议解决方案。AJAX解决了您的问题。您可以使用AJAX请求加载html,您知道这些html将发生变化,从而节省往返时间。