اسپیدی

اسپیدی  یک پروتکل ارتباطی مشخصه باز منسوخ شده‌است که به‌طور عمده توسط گوگل برای انتقال محتوای وب توسعه داده شده بود. اسپیدی، با هدفِ کاهش زمان بارگذاری صفحات وب و افزایش امنیت وب، در ترافیک HTTP تغییراتی را ایجاد می‌کند. اسپیدی از طریق فشرده سازی، هم‌تافتن و اولویت بندی به کاهش تأخیر دست پیدا می‌کند؛ البته این قضیه هم به شرایط شبکه و وبسایت بستگی دارد. اسم SPDY مخفف نیست بلکه یک حالت کوتاه شده کلمه speedy است. علامت تجاری SPDY متعلق به گوگل است.

توسعه‌دهندگان اصلی اسپیدی، یعنی مایک بلش و روبرتو پئون، به توسعهٔ پروتکل HTTP/2 هم پرداخته‌اند. در فوریهٔ سال ۲۰۱۵، گوگل اعلام کرد که با توجه به اینکه استانداردهای HTTP/2 مورد تصویت نهایی قرار گرفته، پشتیبانی از اسپیدی منسوخ خواهد گردید و دیگر از آن پشتیبانی نخواهد شد. پشتیبانی از اسپیدی در مرورگر کروم نسخهٔ ۵۱ توسط گوگل حذف شد و موزیلا هم از نسخهٔ ۵۰ مرورگر فایرفاکس دیگر اسپیدی را پشتیبانی نمی‌کند.

طراحی 
هدف اسپیدی کاهش زمان بارگذاری صفحات وب است. این کار از طریق اولویت بندی و تسهیم کردن انتقال منابع فرعی یک صفحه وب صورت می‌گیرد به طریقی که تنها یک ارتباط برای هر کلاینت نیاز است. رمزگذاری TLS بخش جدایی ناپذیر در پیاده‌سازی اسپیدی است، و در طراحی آن انتقالات به صورت gzip یا DEFLATE فشرده شده‌اند (برخلاف HTTP، که headerها فشرده نیستند). علاوه بر این، سرورها بجای اینکه منتظر درخواست‌های جداگانه برای هر منبع صفحه بمانند به آن‌ها اشاره کرده یا آن‌ها را به سمت کلاینت می‌فرستند.

رابطه SPDY با HTTP 
SPDY جایگزین HTTP نمی‌شود بلکه نحوه ارسال درخواست‌ها و پاسخ‌ها را تغییر می‌دهد. این بدان معنا است که تمامی نرم‌افزارهای فعلی سمت سرور می‌توانند بدون تغییر مورد استفاده قرار بگیرند اگر تنها یک لایه انتقال منطبق با SPDY در جای مناسب قرار بگیرد. وقتی درخواست‌های HTTP بر روی اسپیدی فرستاده می‌شوند، پردازش شده توکن بندی شده، ساده‌سازی شده و فشرده می‌شوند. برای مثال، هر نقطه پایانی در ارتباط اسپیدی سابقه اینکه چه هدرهایی در درخواست‌های پیشین فرستاده شده‌اند را نگاه می‌دارد و می‌تواند از دوباره فرستادن هدرهایی که تغییر نکرده‌اند جلوگیری کند؛ آن‌هایی که باید فرستاده شوند هم به صورت فشرده فرستاده می‌شوند.
گروه کاری IETF در حال برنامه‌ریزی برای کار بر روی HTTP 2.0 می‌باشد و اسپیدی یکی از کاندیداها برای شروع کار است.

کش کردن 
مکانیزم Server Push محتوا را بدون توجه به وجود کش موجود Push کرده که نتیجه آن هدر رفتن پهنای باند است. راه حل این مشکل استفاده از روش Server Hint است.

نسخه‌های پروتکل 
SPDY یک پروتکل نسخه بندی شده‌است. در فریم‌های کنترلی آن ۱۵ بیت برای مشخص شدن نسخه پروتکل اختصاص داده شده‌است. نسخه ۱ پروتکل SPDY دیگر استفاده نمی‌شود. نسخه فعلی SPDY نسخه ۲ می‌باشد، در حالی که SPDY نسخه ۳ در مرورگر کروم نسخه ۱۹ و بالاتر، با هدف جایگزین شدن به جای نسخه ۲ در نسخه ۲۲ این مرورگر، در حال تست می‌باشد. مرورگر فایرفاکس در نسخه ۱۵ از SPDY نسخه ۳ پشتیبانی می‌کند. تغییرات SPDY نسخه ۳، کنترل جریان، بروز رسانی دیکشنری فشرده‌سازی، و حذف فضای تلف شده از بعضی از فریم‌های خاص به همراه رفع ایرادهای جزئی می‌باشد.

پشتیبانی مرورگرها 
مرورگر Google Chrome و Chromium از SPDY پشتیبانی می‌کنند. می‌توانید sessionهای SPDY را از آدرس chrome://net-internals/#events&q=type:SPDY_SESSION%20is:active مشاهده نمایید. فایرفاکس از نسخه ۱۱ و SeaMonkey از نسخه ۲٫۸ از SPDY پشتیبانی می‌کنند.

پشتیبانی سرور 
در ۵ مارس ۲۰۱۵ (۱۴ اسفند ۱۳۹۳) ۳٫۶٪ وب سایت‌ها از اسپیدی استفاده می‌کنند.
تا مارس ۲۰۱۲ (اسفند ۱۳۹۰) سایت‌های کمی هستند که از SPDY استفاده می‌نمایند. بعضی از سرویس‌های گوگل (برای مثال جستجوی گوگل، Gmail و دیگر سرویس‌هایی که SSL برایشان فعال شده) وقتی قابلیت SPDY موجود باشد از آن استفاده می‌کنند.
تبلیغات گوگل نیز از سرورهایی که SPDY را پشتیبانی می‌کنند عرضه می‌شوند.
twitter از مارج ۲۰۱۲ (اسفند ۱۳۹۰)، SPDY را بر روی سرورهای خود فعال کرده و خود را تبدیل به دومین سایت بزرگی که SPDY را مورد استفاده قرار داده، کرده‌است.
در مارس ۲۰۱۲ (اسفند ۱۳۹۰) وب سرور کد باز Jetty پشتیبانی از SPDY را در نسخه ۷٫۶٫۲ خود اعلام کرده، در حالیکه دیگر پروژه‌های کد باز دیگر نیز در حال کار برای پشتیبانی کردن از SPDY هستند. مثل node.js، آپاچی، curl و nginx.
در آوریل ۲۰۱۲ (فروردین – اردیبهشت ۱۳۹۱) گوگل بسته‌هایی را برای پشتیبانی از SPDY برای وب سرور آپاچی عرضه کرده که باعث شده سایت‌های کوچکتر هم از این تکنولوژی بهره‌مند شوند.

در ژوئیه ۲۰۱۷ (مرداد۱۳۹۶) ماژول http2 برای کنترل پنل محبوب WHM یا همان سی پنل نیز فعال گردید

منابع 

ویکی‌پدیا انگلیسی

قراردادهای لایه نشست
پروتکل‌های اینترنت
پروتکل‌های لایه کاربرد