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