AJAX против AHAH Есть ли преимущество в производительности?

Меня беспокоит производительность, есть ли причина отправлять клиенту XML вместо действительного HTML? Как и большинство вещей, я уверен, что это зависит от приложения. Моя конкретная ситуация заключается в том, что на веб-страницу вставляется значительный контент, извлеченный из базы данных.

Каковы преимущества любого подхода? Является ли размер контента проблемой? Или, в случае использования XML, будет ли время, в течение которого JavaScript обрабатывает XML в HTML, уравновешивает дополнительное время, которое потребовалось бы для отправки HTML для начала?

Спасибо джефф

3 ответа

Решение

Важно понимать, что даже при извлечении HTML не следует просто вставлять его прямо в DOM без его обработки. Если он не передается по безопасному протоколу, он может подвергаться атакам MITM. В любое время сохраненный синтаксический анализ XML тратится на очистку HTML-кода для предотвращения внедрения скрипта.

XML также более переносим. Данные в формате XML могут использоваться где угодно на любой странице. HTML отличается в этом аспекте (хотя его можно стилизовать с помощью CSS), не все браузеры имеют легкодоступный синтаксический анализатор без вставки содержимого в DOM. Некоторые могут иметь DOMDocument(), но вы не можете положиться на это в кросс-браузерных целях. С помощью XML вы также можете легко ориентироваться и извлекать необходимые данные с помощью XPath. С HTML (x-browser) вам нужно было бы сначала вставить в DOM или использовать очень ненадежный метод регулярного выражения, который действительно никогда не должен использоваться.

JSON более легок, он избавляется от большой части, которая поставляется с XML и HTML. Будучи нативной разметкой для объектов JavaScript, ее также очень легко анализировать. В отличие от XML и HTML, вы также можете получить доступ к кросс-домену данных JSON, используя JSON with Padding (JSONP).

Таким образом, вам нужно выбрать метод, который наилучшим образом соответствует вашим потребностям. В наши дни большинство людей предпочитают использовать JSON, потому что он очень легкий, его можно использовать в междоменных областях и требует очень мало усилий для анализа с помощью JavaScript.

AJAX не строго соблюдается в соответствии с его аббревиатурой в течение многих лет. Это просто прозвище для "асинхронно загруженного контента".

Большинство AJAX в эти дни сделано с JSON.

Независимо от того, используете ли вы HTML в качестве своих данных через JSON или что-то еще (даже XML), действительно соответствует конкретным потребностям вашего приложения. В этом отношении AHAH - это всего лишь подмножество AJAX.

Если нет никакой пользы от анализа / рендеринга данных на стороне клиента, просто сделайте это на стороне сервера и верните HTML.

JSON ( Javascript Object Notation) чаще используется, чем XML, потому что он легкий и родной Javascript.

При этом, если вам нужен XML, то вы бы вернули XML.

Вот хорошая страница о том, когда использовать HTML, XML или JSON

Вот хорошая страница о различиях между ними.

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 через. Если вы имеете дело с элементами или коллекцией элементов, которыми вы собираетесь манипулировать или как-то использовать их в Javascript, вам нужен JSON. Если вы хотите асинхронно обновлять свой RSS-канал или какой-либо другой XML, вы запрашиваете XML.

Помните, что HTML - это просто подмножество XML. и xHTML следует всем правилам xml. Браузеры, поддерживающие JavaScript (все они), могут понимать JSON ( Javascript) и HTML (XML). Выберите, что подходит вашему проекту, исходя из того, как вы будете использовать данные.

Другие вопросы по тегам