شتابدهی سایت های پویا

تسریع سایت‌های دینامیک (DSA) مجموعه‌ای از فناوری‌ها است که به بهبود کارایی ارائه وب‌سایت‌های دینامیک کمک می‌کند. تولیدکنندگان کنترل‌کننده‌های ارائه برنامه و شبکه‌های تحویل محتوا (CDNها) از مجموعه‌ای از تکنیک‌ها برای تسریع سایت‌های دینامیک استفاده می‌کنند که شامل موارد زیر است:

• مدیریت بهبود یافته اتصالات، با استفاده از چندگانه‌سازی اتصالات مشتری و نگه‌داشتن اتصال HTTP

• پیش‌بارگذاری پاسخ‌های وب که نمی‌توان آنها را کش کرد

• کنترل کش دینامیک

• فشرده‌سازی در حین اجرا

• کش کردن صفحات کامل

• بارگذاری SSL

• تخصیص زمان زندگی مبتنی بر پاسخ (تغییر زمان)

• بهینه‌سازی TCP

• بهینه‌سازی مسیر

مُولتی‌پلکسی TCP

یک دستگاه لبه، که می‌تواند یک ADC (کنترل‌کننده توزیع بار) یا یک CDN (شبکه تحویل محتوا) باشد، قادر به انجام مولتی‌پلکسی TCP است. این دستگاه می‌تواند بین سرورهای وب و مشتریان قرار گیرد تا بار سرورهای اصلی را کاهش داده و سرعت تحویل محتوا را افزایش دهد.

معمولاً هر اتصال بین مشتری و سرور نیاز به یک فرآیند اختصاصی دارد که در سرور اصلی برای مدت زمان اتصال فعال می‌ماند. زمانی که مشتریان دارای اتصال کندی هستند، این مسئله بخشی از سرور اصلی را اشغال می‌کند زیرا فرآیند باید در حین انتظار برای دریافت کامل درخواست، فعال بماند. اما با مولتی‌پلکسی TCP، وضعیت متفاوت است. این دستگاه ابتدا یک درخواست کامل و معتبر از مشتری دریافت می‌کند و سپس آن را به سرور اصلی ارسال می‌کند، زمانی که درخواست به طور کامل دریافت شده باشد. این کار باعث کاهش بار روی سرورهای برنامه و پایگاه داده می‌شود که نسبت به ADCها یا CDNها کندتر و هزینه‌برتر هستند.

**کنترل کش پویا**

HTTP یک سیستم داخلی برای کنترل کش دارد که از هدرهایی مانند ETag، "expires" و "last modified" استفاده می‌کند. بسیاری از شبکه‌های تحویل محتوا (CDN) و کنترل‌کننده‌های توزیع بار (ADC) که ادعا می‌کنند دارای DSA هستند، این سیستم را با سیستم خود جایگزین کرده و آن را کش پویا یا کنترل کش پویا می‌نامند. این کار به آن‌ها گزینه‌های بیشتری برای بی‌اعتبار کردن و دور زدن کش نسبت به کنترل کش استاندارد HTTP می‌دهد.

هدف از کنترل کش پویا افزایش نسبت کش‌هیت (cache-hit ratio) یک وب‌سایت است، که نسبت بین درخواست‌هایی که از کش سرویس‌دهی می‌شوند و درخواست‌هایی که توسط سرور معمولی سرویس‌دهی می‌شوند را نشان می‌دهد.

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

کش ایستای صفحات خاص کاربر پویا، خطر بالقوه‌ای را به همراه دارد که ممکن است محتوای نامربوط یا محتوای شخص ثالث را به کاربران نادرست ارائه دهد، اگر شناسه‌ای که به سیستم کش اجازه می‌دهد تا محتوا را تفکیک کند، یعنی URL/درخواست GET، به درستی با افزودن توکن‌ها یا کلیدهای خاص کاربر تغییر نیابد.

کنترل کش پویا گزینه‌های بیشتری برای پیکربندی کش دارد، مانند کنترل کش مبتنی بر کوکی، که اجازه می‌دهد محتوای کش بر اساس وجود یا عدم وجود کوکی‌های خاص سرویس‌دهی شود. یک کوکی شناسه منحصر به فرد کاربر وارد شده را بر روی دستگاه او ذخیره می‌کند و قبلاً برای احراز هویت کاربران هنگام اجرای هر صفحه‌ای که یک جلسه را باز می‌کند، پیاده‌سازی شده است. در یک سیستم کش پویا، کش‌ها با URL و همچنین کلیدهای کوکی ارجاع داده می‌شوند، که اجازه می‌دهد به سادگی سرویس‌دهی کش‌های پیش‌فرض به کاربران ناشناس و کش‌های شخصی‌سازی شده به کاربران وارد شده انجام شود (بدون اینکه مجبور باشید کد را تغییر دهید تا شناسه‌های کاربری اضافی را به URL اضافه کنید، مانند آنچه در یک سیستم کش ایستا انجام می‌شود).

**پیش‌بارگذاری**

اگر محتوای شخصی‌سازی شده نتواند کش شود، ممکن است در یک دستگاه لبه (edge device) صف‌بندی شود. این به این معنی است که سیستم یک لیست از پاسخ‌های ممکن را که ممکن است در آینده نیاز باشد، ذخیره می‌کند تا به راحتی قابل ارائه باشند. این روش با کش کردن متفاوت است، زیرا پاسخ‌های پیش‌بارگذاری شده تنها یک بار ارائه می‌شوند و به‌ویژه برای تسریع پاسخ‌های APIهای شخص ثالث، مانند تبلیغات، بسیار مفید است.

**بهینه‌سازی مسیر**

بهینه‌سازی مسیر، که به آن "مسیر‌یابی مبتنی بر تأخیر" نیز گفته می‌شود، به بهبود مسیر ترافیک بین مشتریان و سرورهای مختلف مبدا می‌پردازد تا زمان تأخیر را کاهش دهد. این بهینه‌سازی می‌تواند توسط یک ارائه‌دهنده DNS یا یک شبکه توزیع محتوا (CDN) انجام شود.

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

**ارتباط با بهینه‌سازی سمت کاربر**

اگرچه بهینه‌سازی سمت کاربر (FEO) و بهینه‌سازی تحویل داده (DSA) هر دو به مجموعه‌ای از تکنیک‌ها برای بهبود تحویل محتوای آنلاین اشاره دارند، اما بر جنبه‌های مختلفی تمرکز دارند. برخی از نقاط مشترک وجود دارد، مانند فشرده‌سازی داده‌ها به‌صورت آنی و بهبود کنترل کش، اما تفاوت‌های کلیدی عبارتند از:

بهینه‌سازی سمت کاربر بر تغییر محتوای واقعی تمرکز دارد، در حالی که بهینه‌سازی تحویل داده بر بهبود تحویل محتوا بدون تغییر آن تمرکز می‌کند (یعنی DSA محتوای واقعی را به‌صورت دقیق ارائه می‌دهد). DSA بر بهینه‌سازی تحویل داده‌ها در سراسر شبکه تمرکز دارد بدون اینکه محتوای آن تغییر کند، در حالی که FEO هدفش کاهش تعداد اشیاء لازم برای دانلود وب‌سایت‌ها و کاهش حجم کل ترافیک است. این کار می‌تواند از طریق ارائه محتوای آگاه از دستگاه (مثلاً کاهش کیفیت تصاویر)، فشرده‌سازی، تجمیع منابع و درون‌ریزی انجام شود. چون FEO ترافیک واقعی را تغییر می‌دهد، پیکربندی آن معمولاً دشوارتر است، زیرا خطر تأثیر بر تجربه کاربری وجود دارد، به‌ویژه اگر محتوای اشتباهی ارائه شود.

DSA بر کاهش زمان بارگذاری صفحات و کاهش بار سرورهای وب، به‌ویژه برای سایت‌های دینامیک تمرکز دارد. FEO عمدتاً بر کاهش زمان بارگذاری صفحات و کاهش پهنای باند تمرکز می‌کند. با این حال، با پیاده‌سازی FEO می‌توان صرفه‌جویی‌هایی در هزینه‌های سرورهای اصلی نیز داشت، زیرا زمان بارگذاری صفحات را کاهش می‌دهد بدون اینکه نیاز به بازنویسی کد باشد، و بنابراین ساعت‌های کاری که معمولاً برای بهینه‌سازی کد لازم است را صرفه‌جویی می‌کند. همچنین ممکن است درآمد به دلیل کاهش زمان بارگذاری صفحات افزایش یابد.

## '''منابع'''

* "How Dynamic Site Acceleration Works? - GlobalDots". www.globaldots.com. Archived from the original on 2013-01-21. 
* 3 Really good reasons you should use TCP multiplexing | F5 DevCentral". Archived from the original on 2014-02-26. Retrieved 2014-05-01. 
* IBM Knowledge Center". www.ibm.com. Retrieved 2018-11-14. 
* What is Dynamic Caching | section.io". www.section.io. Retrieved 2018-11-14. 
* Does Cloudflare Do Prefetching?". Cloudflare Support. Retrieved 2018-11-14. 
* Amazon Route 53 Adds Latency Based Routing". 
* http://www.akamai.com/dl/feature_sheets/fs_edgesuite_sureroute.pdf [bare URL PDF] 
* Choosing a Routing Policy - Amazon Route 53". docs.aws.amazon.com. Retrieved 2018-11-14.
رده:اینترنت
رده:وبگاه‌ها
رده:شبکه رایانه
رده:خدمات وب