一旦我从Ajax事件中获得响应文本,我就会通过jQuery .html()
方法更改div内容。
有时我会获得更多的响应数据(包含html和脚本以及大约4MB的数据)。使用jQuery .html()
方法将响应数据设置为div内容确实需要更多时间。
有人可以告诉我原因吗?有没有解决方案或替代方案?
答案 0 :(得分:3)
首先,定期下载和插入4MB的HTML永远不会成为一个快速的交互式应用程序。这将是一场网络生猪和记忆困难,而且效果不佳。
除了浏览器可以访问的内存量之外,.html()
方法没有技术限制。 .html()
是原生.innerHTML
属性顶部的shell,没有特别限制。
4MB的HTML需要花费大量时间进行下载,浏览器需要花费大量时间进行解析。这可能是你看到的延迟。时间可能与jQuery无关。在进行了一些与您正在设置的实际内容无关的初始内务管理之后,jQuery只设置.innerHTML
属性,浏览器会处理解析您提供的HTML内容。
现在,如果要替换大量的HTML(例如另外4MB的HTML),那么jQuery可能会慢得多,因为它必须遍历旧内容中的每个元素并确保它已清理任何jQuery状态与即将被删除的元素相关联。
你真的应该修复你的页面设计/应用程序设计,这样你就不必使用4MB的HTML。