резултати от изследване на производителността на различни методи за извличане на колекция ресурси, използвайки протоколите HTTP/1.1, HTTP/2 и HTTP/2 + Server Push за достъп до сървъра. В изследването също така е оценено влиянието върху производителността на наличието на исканите данни в кеша на браузъра и манипулациите на ресурсите на ниво логика на работа на приложението (обединяване на ресурсите в един JSON блок).
Тестването на производителността при изпълнение на 25 заявки показа общо предсказуеми резултати - забележимо изоставане на заявките през HTTP/1.1 при празен кеш и водещо предоставяне на ресурсите в един блок (тестове с етикет "compound"). Производителността на Firefox и Chrome бе приблизително на едно ниво, но наличието на данни в кеша не доведе до очакваното увеличение на ефективността.
Но в теста с обработка на 500 заявки се появи забележимо изоставане на Chrome спрямо Firefox при предаване на голям брой заявки и изоставане на Firefox спрямо Chrome при използване на механизма Server Push и в случаи на използване на HTTP/2 с наличието на по-голямата част от данните в кеша на браузъра. Chrome показа по-ефективна работа с кеша, а Firefox - по-ефективна обработка на външни заявки.
След тестовете беше направен извод, че HTTP/2 позволява доста ефективно обработване на индивидуални заявки на голяма колекция ресурси. Разликите в производителността на простите схеми за индивидуално предоставяне на ресурси в сравнение с методите, при които ресурсите се агрегирали в един блок, не са толкова съществени, за да оправдаят значителното усложняване на логиката на обработка от страна на приложението и сървър. Агрегирането има смисъл само в ситуации, при които производителността има най-висок приоритет. Когато по-важно е опростяването на логиката и простото API, има смисъл да се използва индивидуалната обработка на ресурсите.
Друг извод е, че браузерната кеш памет при използване на HTTP/2 не оказва значително влияние върху производителността на обработката на заявки (пълното изпълнение на 501 заявка се оказа по-бавно от изпълнението на 51 заявка при 90% запълване на кеша само 1,2 пъти в Firefox и 2,3 пъти в Chrome). Използването на Server Push не показа съществени ползи в Firefox, но се оказа ефективно при зареждането на много ресурси в Chrome. Авторите на изследването също така отбелязаха, че оптимизацията на сървърната част оказва по-съществено влияние върху производителността, отколкото оптимизацията на клиентския код, изпълняван в браузъра.
Източник: opennet.ru
