HTTP/2 پروتکلی است که جهت بهبود عملکرد وب طراحی شده و یکی از راهکارهای ارائه شده توسط این پروتکل، فشردهسازی بخشهای فیلد هدر HTTP است. در واقع، با استفاده از HPACK که یک مکانیسم فشردهسازی هدرهاست، دادههای ارسالی و دریافتی کوچکتر میشوند که این موضوع به افزایش سرعت بارگذاری صفحات وب کمک میکند.
فشردهسازی هدرها در HTTP/2 به این معناست که اطلاعاتی که بهصورت مکرر در درخواستها و پاسخها ظاهر میشوند، میتوانند بهصورت بهینهتر ارسال شوند. این روند باعث کاهش پهنای باند مصرفی و همچنین زمان مورد نیاز برای انتقال دادهها میشود. در فشردهسازی HTTP/2، از یک جدول پویا استفاده میشود تا مقادیر فیلدهای هدر ذخیره و طی درخواستهای بعدی مورد استفاده قرار گیرند.
یکی از ویژگیهای HPACK این است که به سازندگان اپلیکیشنها اجازه میدهد تا درک بهتری از اینکه کدام هدرها قابل فشردهسازی و کدام یک ممکن است امن نباشند داشته باشند. به عنوان مثال، هر چیزی که محتمل تغییر در بین درخواستها باشد، بخشی است که احتمالاً کمتر از بهینهسازی بازدهی میبرد. و این به اپلیکیشنها امکان میدهد بهترین تصمیم را در این خصوص بگیرند.
در واقع، فرآیند فشردهسازی و رفع فشردهسازی به این صورت عمل میکند که ابتدا داده توسط فرستنده فشرده میشود و یک نسخه فشرده به جدول فشردهسازی اضافه میشود و سپس گیرنده دادهها را رفع فشردهسازی کرده و به شکل اصلی خود بازمیگرداند. این روش نه تنها از لحاظ امنیتی قابل اعتماد است، بلکه در مصرف منابع سرور و کاربر نیز صرفهجویی میکند.
استفاده از این تکنیکها و استانداردها، در کنار دیگر ویژگیهای HTTP/2 مانند چندکانالهسازی و فشارگذاری (Server Push)، منجر به ایجاد وبسایتی سریع، امن و کارا میشود که کاربران امروز به دنبال آن هستند. حال بیایید نگاهی به کدی بیندازیم که میتواند نمونهای از عملکرد فشردهسازی هدرها در HTTP/2 باشد.
HTTP/2 HPACK
|
|-- Dynamic Table
|
|-- Header Field Representation
| |
| |-- Indexing
| |-- Huffman Encoding
|-- Contexts
| |
| |-- Encoder Context
| |-- Decoder Context
HTTP/2 HPACK
: اشاره به فشردهسازی هدر در HTTP/2 دارد.Dynamic Table
: جدولی که برای ذخیره مقادیر هدرها به صورت پویا در زمان ارتباط HTTP/2 استفاده میشود.Header Field Representation
: نحوه نمایش فیلدهای هدر در فرآیند فشردهسازی.Indexing
: فرایند استفاده از شاخصها برای کاهش تعداد دادههای لازم برای ارسال.Huffman Encoding
: نوعی رمزگذاری که برای کاهش حجم دادههای متنی بکار میرود.Contexts
: شامل دو بخش برای مدیریت فرایند فشردهسازی و رفع فشردهسازی هستند.Encoder Context
: محیط کدگذاری برای فشردهسازی دادهها.Decoder Context
: محیط دیکدگذاری برای رفع فشردهسازی دادهها.