AJAX vs AHAH是否有性能优势?

时间:2010-04-13 16:38:07

标签: javascript html ajax performance ahah

我关心的是性能,是否有理由发送客户端XML而不是有效的HTML?像大多数事情一样,我确信它是依赖于应用程序的。我的具体情况是,从数据库中提取的网页中插入了大量内容。

两种方法的优点是什么?内容的大小是否值得关注?或者,在使用XML的情况下,JavaScript将XML处理为HTML的时间是否会平衡发送HTML开始时所需的额外时间?

谢谢,杰夫

3 个答案:

答案 0 :(得分:5)

多年来,AJAX的首字母缩略词并未得到严格遵守。它现在只是“异步加载内容”的绰号。

现在大多数AJAX都是用JSON完成的。

您是否使用HTML作为JSON上的数据或其他任何内容(甚至是XML)都可以满足您应用程序的特定需求。在这方面,AHAH实际上只是AJAX的一个子集。

如果客户端解析/呈现数据没有任何好处,那么只需让服务器端执行并返回HTML。

答案 1 :(得分:3)

重要的是要认识到,即使在获取HTML时,也不应该直接将其直接放入DOM而不进行处理。如果它不通过安全协议传输,则可能受到MITM攻击。任何时候保存的解析XML都用于清理HTML以防止脚本注入。

XML也更便携。以XML格式提供的数据可以在任何页面上的任何位置使用。 HTML在这方面是不同的(尽管它可以用CSS设置样式),并非所有浏览器都有一个现成的解析器而没有将内容插入到DOM中。有些可能有DOMDocument(),但您不能依赖它来进行跨浏览。使用XML,您还可以使用XPath轻松地定位和提取所需的数据。使用HTML(x-browser),您需要先插入DOM,或者使用真正不应该使用的永远不可靠的regexp方法。

JSON更轻量级,它消除了XML和HTML附带的大量内容。作为JavaScript对象的本机标记,它也很容易解析。与XML和HTML不同,您还可以使用带填充(JSONP)的JSON访问JSON数据跨域。

总之,您需要选择最适合您需求的方法。这些天大多数人都倾向于使用JSON,因为它的重量非常轻,可以跨域访问,只需要很少的精力来解析JavaScript。

答案 2 :(得分:1)

JSON(Javascript Object Notation)比XML更常用,因为它是轻量级的,并且是原生的Javascript。

话虽如此,如果您需要的是XML,那么您将撤回XML。

这是when to use HTML, XML or JSON

上的一个好页面

这两者之间是good page on the differences

JSON主要是出于性能原因而使用的。要使用该页面中的示例

XML:

<?xml version=’1.0′ encoding=’UTF-8′?>
<card>
  <fullname>Bala Arjunan</fullname>
  <org>PH</org>
  <emailaddrs>
   <address type=’work’>abcd@xyz.com</address>
   <address type=’home’ pref=’1′>me@mailme.com</address>
  </emailaddrs>
  <telephones>
   <tel type=’work’ pref=’1′>+12345678</tel>
   <tel type=’mobile’>+1234 1234</tel>
  </telephones>
  <addresses>
   <address type=’work’ format=’B'>1234 Oil Mill St Chennai, IND</address>
   <address type=’home’ format=’B'>5678 Oil Mill St Chennai, IND</address>
  </addresses>
  <urls>
   <address type=’work’>http://balaarjunan.wordpress.com/</address>
   <address type=’home’>http://balaarjunan.wordpress.com/</address>
  </urls>
</card>

JSON:

{
  “fullname”: “Bala Arjunan”,
  “org”: “PH”,
  “emailaddrs”: [
    {"type": "work", "value": "abcd@xyz.com"},
    {"type": "home", "pref": 1, "value": "me@mailme.com"}
  ],
  “telephones”: [
    {"type": "work", "pref": 1, "value": "+12345678"},
    {"type": "mobile", "value": "+1234 1234"}
  ],
  “addresses”: [
    {"type": "work", "format": "us", "value": "1234 Oil Mill St Chennai, IND"},
    {"type": "home", "format": "us", "5678 Oil Mill St Chennai, IND"}
  ],
  “urls”: [
    {"type": "work", "value": "http://balaarjunan.wordpress.com/"},
    {"type": "home", "value": "http://balaarjunan.wordpress.com/"}
  ]
}

使用JSON,冗余要少得多。

OTOH,发送简单的HTML'HTML也很有效。你必须考虑你的数据。如果您只是更新一段文字,只需发送html即可。如果您正在处理项目,或者您要在Javascript中以某种方式操作或使用的项目集合,则需要JSON。如果要同步更新RSS源或其他XML,则需要XML。

请记住,HTML只是XML的一个子集。和xHTML遵循所有xml规则。知道javascript的浏览器(所有这些)都可以理解JSON(Javascript)和HTML(XML)。根据您使用数据的方式选择适合您项目的内容。