تفاوت HTTP 1.1 با HTTP 2 و تاثیر آن در بهینه سازی Nginx
تفاوت HTTP 1.1 با HTTP 2 و تاثیر آن در بهینه سازی Nginx
در این نوشته میخوام راجع به تفاوت های HTTP 1.1 , HTTP 2 بنویسم و استفاده از این دو ورژن میتونه چه تاثیری تو بهینه سازی سرعت لود شدن اپلیکیشن ها ما داشته باشه.
سالهای پیش که فقط HTML وجود داشت و کمو بیش وب سایت ها از CSS استفاده میکردند فقط متود GET وجود داشت و هنوز فریم ورک های مختلف و جاوااسکریپت و اینها وجود نداشتن که سرورها پر قدرت تر باشن و لود اطلاعات را بفهمن، بیشتر نیازشون در همین حد بود که یک سایت استاتیک رو لود کنن اما بعد از پیدایش وب اپلیکیشن ها و پیج های تک صفحه ای دیگر بحث لود درخواست های زیر ۱۰۰ کیلوبایتی نبود و نیازهایی مثل کاهش زمان بارگزاری صفحات وب سایت مطرح شد.
اونجا بود که سروکله HTTP2 پیدا شد که بتونه آینده وب رو که در حال حاضر ما درونش هستیم رو نجات بده .
حالا ببینیم چجوری این نجات صورت گرفته :
اول از همه باید بگیم که HTTP 2 باینری پروتکل (Binary Protocol) هست که اطلاعات رو در قالب ۰,۱ ارسال و دریافت میکنه که مطمئنا به دلیل فشردگی از سرعت پاسخ HTTP 1.1 که به صورت text هست، سریعتر میشه.
http2 همچنین پاسخ های خودش به درخواست ها رو فشرده میکنه.
و مهمتر از همه اینکه HTTP2 از Persistent Connections استفاده میکنه که بخواهیم ملموس ترش کنیم بهتره مثال یک فایل HTML رو بزنیم که داخلش دو فایل CSS , JavaScript رو لود کرده که فایل HTML در قالب یک درخواست ارسال شده و منتظر پاسخ هست ، در اینجا هر سه فایل HTML , CSS, JS , در قالب یک جواب با ریسپانس کامپکت میشن (باینری) و ارائه میشن و این اتفاق در قالب یک کانکشن صورت میگیرد که در HTTP 1.1 اینگونه نیست و برای هر سه فایل جداگانه کانکشن باز و بسته میشد و این زمان زیادی را برای ترنسفر اطلاعات رقم میزد .