AJAX против AHAH Есть ли преимущество в производительности? - PullRequest
2 голосов
/ 13 апреля 2010

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

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

Спасибо, Джефф

Ответы [ 3 ]

5 голосов
/ 13 апреля 2010

AJAX не строго соблюдается в соответствии с его аббревиатурой в течение многих лет. Теперь это просто прозвище для «асинхронно загруженного контента».

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

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

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

3 голосов
/ 13 апреля 2010

Важно понимать, что даже при извлечении 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.

1 голос
/ 13 апреля 2010

JSON (нотация объектов Javascript) чаще используется, чем 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). Выберите, что подходит вашему проекту, в зависимости от того, как вы будете использовать данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...