Главная / Проекты и исследования / Сравнение XMLHttpRequest и Fetch API / Фаза 1


Сравнение XMLHttpRequest и Fetch API. Фаза 1

NB: писано по горячим следам прошедшей конференции ИТиАУ.

Ссылка на репозиторий с исходными кодами: https://codeberg.org/danila-kondr/xhrfetch

27 мая 2023 г.

После сдачи курсового проекта на кафедру АСОИУ я обратился к Александру Геннадьевичу за темой для научной статьи. Он предложил мне сравнить два метода AJAX-запросов: XMLHttpRequest и Fetch API. Я, естественно, в скором времени приступил к исследованию этой темы и постановке экспериментов. Исходный материал в виде веб-страницы, PHP и JS-скриптов был прислан по электронной почте.

Естественно, сами по себе эти файлы ничего сделать не способны, поэтому я по рекомендации Александра Геннадьевича поставил XAMPP, где уже есть всё необходимое, и скопировал в нужную папку все исходные файлы.

Для того, чтобы определить, за сколько выполняется каждая разновидность асинхронных запросов, было решено запустить процедуру достаточно большое количество раз (как в timeit). Запрос делался на PHP-скрипт, который выдавал небольшую строчку, записанную в кодировке UTF-8 русскими буквами. Методом подбора было выбрано оптимальное число запросов, а именно  — 1000. Поскольку время может различаться из раза в раз, тест повторялся для каждого метода по 10 раз с периодичностью в одну секунду.

Но ведь объёмы данных не ограничиваются небольшими порциями. Иногда из Интернета выкачиваются асинхронно целые мегабайты, поэтому был введён тест для больших наборов данных. К сожалению. при попытке запустить его при 1000 запросов система зависала намертво, поэтому пришлось урезать до 25. Конечно, пострадала точность, но другого варианта не было.

Эксперимент проводился на двух операционных системах на различных браузерах. Ради интереса я даже попросил макбук у Артемия Андреевича, чтобы попробовать запустить тест на Safari.

В итоге я получил данные с 11 различных экспериментов на разных браузерах на трёх операционных системах: Windows, Linux, macOS. При этом на macOS почему-то Safari показал самые лучшие результаты. Почему — непонятно.

Статья была оформлена и отправлена Александру Геннадьевичу на доработку, а после доработки — принята на конференцию ИТиАУ.

Доклад был представлен 26 мая 2023 года. В процессе подготовки к докладу, а также во время самого доклада были выявлены некоторые недостатки:

Таким образом, эксперимент был неидеален, но я думаю, что эксперимент на этом не останавливается. Он будет пересмотрен и доработан плюс будут исследованы факторы, которые могут влиять на сам запрос.

Примерная схема переделанного эксперимента

Для того, чтобы исключить различные факторы, которые могут влиять на производительность, необходимо:

Примерные схемы экспериментов по исследованию различных факторов

Эксперимент по обнаружению кэширования запросов

Для этого эксперимента необходимо запустить тест на малом наборе данных меньшее число раз (100) и прогнать 100 циклов с периодичностью в 0,1 с. Построить графики. Можно ожидать, что максимальное значение будет первым.

Эксперимент по обнаружению зависимости времени от количества открытых вкладок в браузере

Схема эксперимента не отличается от таковой для случая с одной вкладкой. Единственное отличие — для эксперимента используется исключительно малый набор данных. Каждый раз после проведения эксперимента открываем вкладку с Яндексом. Повторяем 10 раз.