HTTP/2 راهی جدید برای سریعتر کردن میزان زمان بارگذاری وبسایت با حذف کردن برخی از ویژگیهای ناکارآمد در HTTP است. پیادهسازی HTTP/2 کار سختی نیست و نیازی به تلاشهای بسیار نیست. در این مطلب قصد داریم به صورت مقدماتی شما را با HTTP/2 آشنا کنیم.
HTTP/2 چیست؟
زمانی که HTTP/1 و HTTP1.1 توسعهداده شد، دنیای وب با امروز تفاوتهای بسیاری داشت. وبسایتها در آن زمان منابع (فایلهای جاوااسکریپتی، تصاویر، فایلهای CSS) بسیار کمتری نسبت به امروز داشتند. ارتباطات اینترنتی تا به این حد سریع نبودند و حقیقتا سرعت بارگذاری وبسایت تا به امروز مهم و تعیین کننده نبود.
در گذشته وقتی بارگذاری یک وبسایت به صورت کامل انجام میشد، خوشحالی زیادی داشت، البته ممکن بود که به صورت مخفیانه پیش خودتان از وضعیت بارگذاری شکایت بکنید اما در حقیقت کاری برای انجام دادن وجود نداشت. این بدان دلیل است که کم بودن سرعت بارگذاری وبسایت مسئلهای مستقل از وب سرور و تکنولوژیهایی که وبسایت استفاده میکرد بود. در حقیقت دلیل اصلی برای این کم بودن سرعت، ارتباط اینترنت بود.
اما امروزه با پر سرعت شدن ارتباطات مبتنی بر اینترنت، سرعت بارگذاری وبسایت با واحد میلیثانیه شمرده میشود. وقتی وبسایتی بیشتر از ۳ ثانیه زمان برای بارگذاری نیاز داشته باشد، کاربران شاکی میشوند. اما حال با پیشرفت اینترنت نیاز است که تکنولوژیهای موجود نیز پیشرفت داشته باشند.
نسخه جدید HTTP که به عنوان HTTP/2 شناسایی میشود مشکلات مربوط به HTTP را حل میکند. مشکلاتی که در HTTP وجود دارد با بزرگ شدن وبسایتها و منابع استفاده شده در آن شناسایی شده است و حال میشود آنها را حل نمود.
اما واقعا مشکل اصلی با HTTP1.x چیست و چرا تلاش بسیاری را برای سریعتر شدن میکنیم؟
مشکلات HTTP1.x
در HTTP1.x راههایی وجود دارد که با استفاده از آنها میتوانید میزان کارایی را بالاتر ببریم:
۱. HTTP1.x مبتنی بر متن است: در اصل ایده اولیه HTTP1.x بدین صورت بوده که بتوان قابلیت خوانایی بالایی برای انسانها داشته باشد، بنابراین HTTP1.x مبتنی بر متن است. با تعریف تمام متنهای مبتنی بر پروتکلها ناکارآمدیهایی در فضاهای سفید، لینکهای شکسته، بزرگی و کوچکی حروف و... اتفاق میافتاد.
۲. تنها یک فایل در هر انتقال فرستاده میشود: این مورد یکی از بزرگترین مشکلاتی بوده که با HTTP1.x همراه است. تصور کنید که یک پیک هستید که تنها قابلیت ارسال یک محصول را در هر بار بیرون آمدن از اداره پست دارید. آنها باید هر بار به انبار اصلی برگشته و یک بار دیگر را -با هر حجمی- بردارند.
۳. صدها درخواست برای وبسایتهای امروزی نیاز است: داشتن پوستههای پیچیده و طراحی بزرگ بدان معناست که اندازه وبسایت و تعداد درخواستها برای منابع افزایش پیدا میکند. بنابراین برای جوابگویی به هر کدام از این منابع میزانی زمان لازم است. مثال پیک را به یاد بیاورید، شما تنها قادر به ارسال یک محصول در هر بار مراجعه هستید.
۴. هر ارتباط یک عملیات تکنیکی سنگین است: از آنجایی که صدها ارتباط نیاز است، بنابراین افزونگی بسیاری اتفاق میافتد. حال که زمان بارگذاری مربوط به یک وبسایت براساس میلیثانیه حساب میشود بنابراین میزان زمان ترکیب ارتباطات بسیار چشمگیر خواهد بود.
بسیاری از اوقات طراحان وب نیاز دارند که معیارهای جدیدی را برای کاهش این ناکارآمدی در نظر بگیرند. کارهایی مانند فشردهسازی، باندلکردن و... راهکارهایی است که طراحان وبسایت بر مشکلات مربوط به بارگذاری غلبه میکنند.
البته این موارد تنها میانبر هستند اما راهحل واقعی چیز دیگری است.
چگونه HTTP/2 مشکلات HTTP1.x را حل میکند؟
HTTP/2 از طرف SPDY طراحی و ارزیابی شده است. پروتکلی که با هدف دو برابر سریعتر کردن فضای وب در گوگل ایجاد شد. در این پروتکل مشکلات HTTP به صورت زیر آدرسدهی شدهاند:
- HTTP/2 برای مصرف ماشینها در نظر گرفته شده است: منظور از ماشین مرورگر وب و وب سرور مربوط به وبسایتتان است. پس در این پروتکل هدف اصلی انسان نیست. از آنجایی که این پروتکل مبتنی بر باینری است نه متن، پس کارایی بیشتری از خود بروز میدهد. انتقال و تفسیر دادهها در این پروتکل بسیار سریعتر است.
- چندین فایل به صورت همزمان روی یک ارتباط قابلیت انتقال دارند: شما در این پروتکل میتوانید منابع را روی یک ارتباط لولهکشی کنید. بجای اینکه هر بار برای یک ارتباط جدید ایجاد شود حال میتوانید منابع مختلف را روی یک ارتباط ارسال کنید.
- هشدار سرور برای انتقال فایلها توسط مرورگر ضروری خواهد بود: در HTTP1.x مرورگر از وب سرور درخواست منابع میکند. اما در نسخه جدید قابلیت HTTP Server Push فراهم شده که باعث میشود سرور اطلاعات و منابعی که یک مرورگر نیاز دارد را ارسال نماید. برای مثال شما میتوانید از سرور درخواست کنید که منتظر دریافت درخواست از مرورگر برای دریافت منابع نباشد. بجای این میتوانید در هر صورت فایلها را در اختیار مرورگر قرار دهد.
- HTTP Packet Header و بهینهسازیهای دیگر: این موارد بهینهسازیهای تکنیکی است که برای بهینهسازی کارایی و انتقالات ایجاد شده است.
چه چیزهایی برای فعالسازی HTTP2 نیاز است؟
براساس سخنهایی که در ابتدای مقاله گفته شد، تلاش زیادی برای فعالسازی HTTP2 نیاز نیست. فعال کردن HTTP2 کاری است که در سطح وب سرور باید انجام شود. بیشتر وب سرورها مانند آپاچی، Ngnix، IIS و دیگر وب سرورها از HTTP2 پشتیبانی میکنند.
اگر شما وب سرور خودتان را به کار میبرید، تنها نیاز است که کتابخانه HTTP2 را نصب و فعال کنید. اگر وبسایتتان توسط یک شرکت میزبانی میشود، میتوانید از پشتیبانی برای وجود HTTP2 سوال بپرسید و آن را بررسی کنید.
کش؟ گواهینامههای امنیتی
تا به اینجای کار تنها در رابطه با پشتیبانی وب سرورها از HTTP2 صحبت کردهایم. بیشتر مرورگرهای وب در حال حاضر از HTTP2 پشتیبانی میکنند. با این حال برخی از آنها تصمیم گرفتهاند که از آن تنها در حالت محافظت شده استفاده کنند. دلیل این مورد این است که حرکت بسیار قدرتمند و فعالانهای برای استفاده از HTTPS در تمام وبسایتها شکل گرفته است.
با پشتیبانی نکردن از HTTP2 در یک ارتباط محافظت نشده، دارندگان وبسایت برای پیادهسازی HTTPs در وبسایتشان بسیار مجهز خواهند شد.
البته این موضوع الزاما بد نیست. پیادهسازی HTTPs مزیتهای امنیتی بسیاری دارد. هزینه استفاده از این حالت نیز هر روز بدلیل وجود ضرورت ارزانتر میشود.
نکته خوب ماجرا این است که با پیادهسازی این ارتباط شما قابلیت استفاده از HTTP/2 را نیز در وبسایتتان با پشتیبانی کامل خواهید داشت.
آیا بهینهسازیهای تکنیکی دیگری نیاز است؟
بله و خیر!
بهینهسازیهایی برای کم کردن درخواستهای وب نیاز است. اگر وبسایتتان با محاسبات مربوط به تلفیق جاوااسکریپت، CSS و دیگر فایلها درگیر شود، هزینههایتان بالا میرود. هر آدرس دهی نادرستی در این حالت ممکن است باعث ناکارآمدی شود.
از طرفی دیگر بهینهسازیهایی مانند کشینگ، کم کردن اندازه منابع، تحویل محتوا براساس یک شبکه توزیع محتوا، انتخاب یک سرور هاستینگ مناسب و دیگر بهینهسازیها که نوعهای مختلفی از ناکارآمدی را برطرف میکنند باید در جایشان بمانند.
نکته بسیار خوب در رابطه با HTTP2 این است که نه تنها وبسایتتان را سریعتر میکند بلکه امنیت آن را بالاتر میبرد. فکر نکنم هیچ بحثی باقی بماند. قدم بعدیتان برای بالا بردن سرعت وب سرور استفاده از HTTP2 است. همین الان شروع کنیم.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید