Какво е добре да знаем за HTTP/2
HTTP/2 или HTTP версия 2 е втората основна версия на мрежовия протол HTTP. Той е базиран на SPDY/2 с цел значително подобряване на уеб производителността. HTTP/2 е координирана разработка на Internet Engineering Task Force (IETF).
HTTP 1.1 беше голяма стъпка напред в сравнение с HTTP 1.0, тъй като направи възможно използването на непрекъснати връзки (повече от една заявка/отговор в една и съща HTTP връзка), подобрено кеширане, нови статус кодове, подобрена поддръжка на компресия, метода OPTION за Cross Origin Resource Sharing в уеб приложения и др.
HTTP/1.1 се ползва масово повече от 15 години, но в днешно време недостатъците са вече очевидни. Съвременните уеб сайтове използват повече ресурси, което прави тяхното зареждане трудно за, тъй като HTTP/1.1 на практика позволява само една заявка във всяка отделна TCP връзка.
Поради тази причина, много TCP връзки се създават за пренасяне на паралелни заявки. Тъй като няма никакво ограничение в тази практика, в повечето случаи се използват прекалено много връзки и прекомерното им използване от браузърите. Това означава, че голям обем от една и съща информация се пренася в Интернет генерирайки ненужен трафик.
Както се досещате, наличието на твърде много заявки се отразява негативно на производителността. Това накара уеб индустрията да прибегне до практики и похвати като “image sprites”, “data: inlining”, “domain sharding” и “concatenation”. Тези “хакове” са недвусмислен знак за наличие на описаните недостатъци в HTTP/1.1 протокола.
HTTP/2 предоставя значително по-ефективно използване на мрежовия ресурс, както и намалено възприятие на латентност чрез въвеждане на компресия на Header полетата, както и позволяване на обмен на множество едновременни връзки.
Освен това, HTTP/2 позволява т.нар. “Server Push” - непоискан трансфер на данни в посока сървър - клиент. Тази спецификация е алтернатива на синтаксиса за съобщения на HTTP/1.1.
Кратко обобщение за HTTP/2:
- Двоичен а не текстови протокол;
- Напълно мултиплексиран, вместо последователен;
- Използва една връзка за паралелизиране;
- Компресира хедърите;
- Позволява сървърите да "подават" активно отговори на заявки в клиентския кеш.
Научете още за HTTP/2 на адрес http2.github.io