关于动态加载Javascript对象的性能问题

时间:2009-05-08 21:44:26

标签: javascript json scripting loading dynamic

哪个更快,

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

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

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

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

3 个答案:

答案 0 :(得分:1)

它可能因浏览器和其他一些因素而异,所以我认为如果你真的想要最好的性能,你应该做一些测试并对它们进行分析。首先,eval()的性能可能会有很大差异,具体取决于你的eval()'

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我同意JSON2库可能是eval()的方法。但是对于传输来说,根据John Resig所做的一些分析,看起来JSONP机制比XMLHTTPRequest更快。

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