Встраивание встроенного JS-скрипта вместо выполнения AJAX-запроса.Зачем? - PullRequest
4 голосов
/ 27 июля 2010

Я заметил, что некоторые веб-сайты (например, apple.com или disqus.com) не отправляют AJAX-запрос для загрузки, например, результатов поиска в режиме реального времени.Вместо этого они присоединяют новый JS-скрипт, который содержит все результаты в переменной.

Чтобы быть более точным.Если вы идете на apple.com и набираете «test» в поисковике.Он не будет отправлять AJAX-запрос для получения результатов, вместо этого он добавит в HTML и выполнит новый фрагмент JS-сценария длявнести в результаты поиска.Улучшение Они делают это только потому, что вы не можете отправить запрос AJAX в другой домен, или возможно какое-либо улучшение скорости?

Ответы [ 4 ]

1 голос
/ 27 июля 2010

Одним из основных преимуществ метода JSONP является то, что, поскольку теперь ваша функция поиска обслуживается с другого сервера, и вы пошли вперед и приложили усилия для разработки механизма ответа JSONP, вы можете продолжить и внедрить этот поиск куда хочешь.

Таким образом, в вашем конкретном примере Apple может использовать тот же поиск (если он инкапсулирует и их другие экосистемы) для показа результатов, например, на другом дочернем сайте.

С точки зрения производительности, как отмечает @fantactuka, вызовы AJAX предпочтительнее, на мой взгляд, также, поскольку внедрение скриптов обходится дорого и обеспечивает меньше способов обработки, когда что-то идет не так.

1 голос
/ 27 июля 2010

Этот подход называется jsonp.Вместо вызова ajax-запроса скрипт добавляет новый тег-скрипт, содержащий данные, обернутые в функцию обратного вызова (например, обратные вызовы onComplete для вызовов ajax).Это полезно в тех случаях, когда вам нужен запрос на другой домен.В противном случае (на мой взгляд) ajax вызывает предпочтительнее, например, имеет правильные error, success и обратные вызовы по таймауту.

подробнее о Jsonp

1 голос
/ 27 июля 2010

Существует много дискуссий в Интернете о «хакерстве» JSONP:

Я считаю, что это чрезвычайно полезно для преодоления ограничений междоменной безопасности, но я не видел и не слышал о каких-либо улучшениях скорости.

Я настоятельно рекомендую больше узнать о JSONP (особенно когда это полезно / необходимо).

0 голосов
/ 27 июля 2010

Я считаю, что это способ обойти ограничение, накладываемое браузером, когда запросы должны быть направлены на тот же сервер, с которого была загружена страница.

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