可以通过 jQuery html() 方法设置的最大数据限制是多少

Posted

技术标签:

【中文标题】可以通过 jQuery html() 方法设置的最大数据限制是多少【英文标题】:What is maximum limit of data can be set through jQuery html() method 【发布时间】:2013-02-23 13:45:29 【问题描述】:

一旦我从 Ajax 事件中获得响应文本,我将通过 jQuery .html() 方法更改 div 内容。

有时我会得到更多响应数据(包含 html 和脚本以及大约 4MB 的数据)。使用 jQuery .html() 方法将响应数据设置为 div 内容确实需要更多时间。

谁能告诉我原因?有没有解决方案或替代方案?

【问题讨论】:

我认为你有一个更大的问题。例如,为什么你需要浏览器一次加载 4MB 的 html? 我们正在通过页面处理 ajax 事件。因此,必须为每个事件更新整个页面数据。 @RamaRaoM - 这显然是为什么其中一些企业应用程序真的很糟糕的原因。定期更新 4MB 的 HTML 是一个非常糟糕的设计选择。还有许多其他设计选择。 @jfriend00 - +100 对您的评论。我一直对“企业”应用程序的质量感到震惊。给 OP;你应该强烈考虑一个关于如何避免这种“需要”的新问题。 更好的方法。 @RamaRaoM - 我们需要更多关于您的应用程序正在做什么的更多信息,以便更明确地了解推荐什么。答案可能包括,使用少量 JSON 数据的增量更新,增量 DOM 更改而不是 4MB 的 HTML,重新考虑的 UI 不会尝试将 4MB 的 HTML 放在一个屏幕上或一次修改 4MB 的数据,等等...... 【参考方案1】:

首先,定期下载和插入 4MB 的 HTML 永远不会构成一个快速的交互式应用程序。它将成为一个网络贪婪者和一个内存贪婪者,并且表现不佳。

除了浏览器可以访问多少内存之外,.html() 方法没有技术限制。 .html() 是原生 .innerHTML 属性之上的一个 shell,没有特别的限制。

4MB 的 HTML 需要大量时间来下载,并且浏览器需要大量时间来解析。这可能就是您看到的延迟。时间可能与jQuery无关。在与您设置的实际内容无关的一些初始内务处理之后,jQuery 只需设置 .innerHTML 属性,浏览器就会处理您提供的 HTML 内容的解析。

现在,如果你要替换大量的 HTML(例如另外 4MB 的 HTML 集),那么 jQuery 可能会慢很多,因为它必须遍历旧内容中的每个元素并确保它已经清理了任何 jQuery与即将被删除的元素相关联的状态。


你真的应该修复你的页面设计/应用程序设计,这样你就不必使用 4MB 的 HTML。

【讨论】:

哦..好的。但是你能告诉我IE和Chrome的浏览器限制吗? 我已经调试了脚本,发现 jQuery.html() 方法需要更多时间。 @RamaRaoM - 我知道没有硬编码的浏览器限制。这可能取决于您在给定计算机上拥有多少 RAM 和交换空间。移动浏览器通常可以访问比桌面浏览器少得多的内存。您确实需要修复您的页面设计或应用程序设计,以免使用 4MB 的 HTML!

以上是关于可以通过 jQuery html() 方法设置的最大数据限制是多少的主要内容,如果未能解决你的问题,请参考以下文章

前端基础-jQuery的最常用的的方法eachdata

实现动态 HTML 表单的最简洁方法是啥?

可以通过 jQuery html() 方法设置的最大数据限制是多少

jQuery 获取和设置HTML元素

在 jquery 中使用 X 登录关闭 load() 页面的最有效方法

将 JQuery Promise 数组转换为数组的 JQuery Promise 的最简洁方法是啥?