【问题标题】:performance questions on dynamically loading Javascript Objects动态加载 Javascript 对象的性能问题
【发布时间】:2010-10-24 22:13:19
【问题描述】:

哪个更快,

  1. 使用 XMLHTTP Get 请求而不是使用 eval() 作为响应文本

  2. 使用 JSONP 技术加载脚本,然后评估脚本的 innerHtml。

  3. 动态地将脚本标签添加到将 javascript 对象分配给变量的文档的头部?

我的直觉告诉我这应该是选项 3,但我不确定 eval 与使用脚本标签相比如何。有什么想法吗?

【问题讨论】:

  • 也许写一个所有 3 的快速版本并对结果进行基准测试?尝试使用一个相当大的 Javascript 对象,这样速度上的任何差异都是显而易见的。

标签: javascript json scripting loading dynamic


【解决方案1】:

它可能会因浏览器和其他一些因素而异,所以我认为如果你真的想要最好的性能,你应该做一些测试并分析它们。一方面,eval() 的性能可能会因你 eval()'ing 的不同而有很大差异

【讨论】:

    【解决方案2】:

    你应该只使用JSON2 library来解析json数据,因为使用eval是不安全的(使用eval会导致大量潜在的站点漏洞),它很慢(尤其是在较新的jitting JS引擎中) ,最后(更重要的是)JSON2 库提供的 JSON 对象正在成为 ecma 脚本(例如 javascript)标准的一部分,这意味着浏览器现在正在本地实现 json 解析(和字符串化),从而大大提高了性能。

    幸运的是,如果您使用 JSON2 库,它会检测到 JSON 对象的本机实现的存在并且不会覆盖它,所以只要随意使用它就会为您提供一个安全的实现,随着浏览器支持的改进,它会神奇地变得更快。

    【讨论】:

      【解决方案3】:

      我同意 JSON2 库可能是 eval()'ing 的方式。但是对于传输,根据 John Resig 所做的一些分析,JSONP 机制似乎比 XMLHTTPRequest 更快。

      http://ejohn.org/blog/native-json-support-is-required/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-21
        • 2023-03-08
        • 2011-02-25
        • 1970-01-01
        • 1970-01-01
        • 2021-09-26
        • 2020-05-25
        相关资源
        最近更新 更多