CDN چیست و چرا هر گفتوگویی دربارهی سرعت سایت دیر یا زود به آن میرسد؟ ماجرا از یک واقعیت ساده شروع میشود: سایت شما روی یک سرور در یک نقطهی مشخص از نقشه نشسته است، اما بازدیدکنندههایتان پراکندهاند — بخشی داخل ایران، بخشی آنسوی گذرگاه بینالملل — و هیچ نقطهای وجود ندارد که به همهی آنها نزدیک باشد. شبکه توزیع محتوا (CDN) پاسخ مهندسی به همین بنبست است: نسخهای از محتوای سایت روی نودهایی نزدیک به کاربران نگه داشته میشود تا هر درخواست از کوتاهترین مسیر ممکن جواب بگیرد. در این راهنما سازوکار CDN را بدون اغراق باز میکنیم — کش لبه، HIT و MISS، محافظت از سرور مبدأ، بهینهسازی تصویر — و همانقدر صادقانه میگوییم که CDN چه کارهایی را نمیتواند انجام دهد.
CDN چیست؟ تعریف شبکه توزیع محتوا به زبان ساده
CDN — مخفف Content Delivery Network یا شبکه توزیع محتوا — مجموعهای از سرورهاست که در نقاط جغرافیایی مختلف مستقر شدهاند و به هرکدام «نود لبه» میگویند؛ لبه به این معنا که در حاشیهی شبکه و نزدیک کاربر نهایی قرار گرفتهاند، نه در مرکز و کنار سرور اصلی شما. وقتی دامنهی سایت پشت CDN قرار میگیرد، درخواست هر بازدیدکننده ابتدا به نزدیکترین نود لبه میرسد، نه به سرور اصلی — سروری که در ادبیات CDN به آن «مبدأ» یا Origin گفته میشود.
نود لبه دو کار میکند: محتوایی را که قبلاً از مبدأ گرفته در حافظهی خودش نگه میدارد و دفعههای بعد مستقیماً همان را تحویل میدهد؛ و درخواستهایی را که پاسخشان را ندارد، از طرف کاربر به مبدأ میرساند و جواب را برمیگرداند. نتیجهی عملی این معماری دوگانه است: تصویر و استایل و فونت از چند ده کیلومتری کاربر سرو میشوند، و سرور مبدأ هم بهجای هزاران کاربر، فقط با چند نود لبه طرف است. به همین دلیل است که «سی دی ان» همزمان یک ابزار سرعت و یک لایهی حفاظتی به حساب میآید — دو نقشی که در ادامه جدا بررسی میکنیم.
یک سوءتفاهم رایج را همین اول کنار بگذاریم: CDN جایگزین هاست نیست. نسخهی اصلی سایت — کد، دیتابیس، فایلها — همیشه روی مبدأ زندگی میکند و نودهای لبه فقط رونوشتهای موقتی از بخشهای قابلکش آن نگه میدارند. اگر مبدأ نباشد، CDN چیزی برای توزیع ندارد.
چه مسئلهای را CDN حل میکند؟ فیزیک فاصله و TTFB
اهمیت فاصله را یک عدد نشان میدهد: تأخیر مسیر، یعنی زمانی که یک بسته از مرورگر تا سرور میرود و برمیگردد. مرورگر پیش از دریافت اولین بایتِ هر منبع ناچار است چند نوبت همین مسیر را طی کند و شاخص TTFB دقیقاً همین انتظار را ثبت میکند. نکتهی کلیدی اینجاست که این هزینه یکبار پرداخت نمیشود: صفحهای با دهها فایل ایستا، همان تأخیر پایه را بارها در خودش تکرار میکند و حاصلجمعش همان مکثی است که کاربر پیش از دیدن صفحه حس میکند.
برای بازدیدکنندهای در تهران، سروری در فرانکفورت اغلب بیش از ۱۰۰ میلیثانیه «دور» است؛ همان بازدیدکننده به نودی داخل کشور معمولاً در چند ده میلیثانیه — و گاهی کمتر — میرسد. این دو عدد را در سی چهل منبع ایستای یک صفحه — تصویر، CSS، جاوااسکریپت، فونت — ضرب کنید تا وزن واقعی فاصله روشن شود: وقتی همهی این فایلها از نود لبهی نزدیک بیایند، بخش بزرگی از زمان بارگذاری بیسروصدا حذف میشود. CDN دقیقاً از همین راه سرعت سایت را افزایش میدهد: نه با «قویتر کردن» چیزی، بلکه با کوتاهکردن مسافتی که بیشترِ بایتها طی میکنند.
ریشههای این تأخیر و راههای سنجش آن را در راهنمای کاهش پینگ جداگانه شکافتهایم؛ و اگر هنوز درگیر تصمیم محل سرور اصلی هستید، مقایسهی هاست ایران و خارج نشان میدهد مبدأ باید کجا باشد — تصمیمی که CDN آن را کماهمیت میکند اما حذف نمیکند.
کش لبه چگونه کار میکند؟ HIT، MISS و عمر کش
قلب هر CDN کش لبه است و رفتارش را میشود با دو کلمه توصیف کرد. وقتی درخواستی به نود لبه میرسد، نود اول در حافظهی خودش میگردد: اگر نسخهی معتبری از آن محتوا داشته باشد، همان را فوراً تحویل میدهد — این پاسخ HIT است و سرور شما اصلاً خبردار نمیشود. اگر نداشته باشد یا نسخهاش کهنه شده باشد، درخواست را به مبدأ میفرستد، پاسخ را برای کاربر برمیگرداند و همزمان یک رونوشت برای دفعههای بعد نگه میدارد — این MISS است و همان تأخیر مسیر کامل را دارد، اما درخواست بعدیِ همان محتوا را به HIT تبدیل میکند.
اینکه هر محتوا چه مدتی در کش بماند، تصمیم یکطرفهی CDN نیست؛ سرور مبدأ با هدرهای HTTP — مشخصاً Cache-Control — اعلام میکند هر پاسخ تا کی «تازه» حساب میشود و نود لبه به همان پایبند میماند. سازوکار کامل این هدرها در مستندات کش HTTP در MDN توضیح داده شده است. خودتان هم میتوانید وضعیت کش یک فایل را با یک درخواست ساده ببینید:
curl -I https://example.com/assets/logo.png
HTTP/2 200
cache-control: public, max-age=86400
x-cache: HIT
age: 4210
هدر x-cache (یا معادل آن در هر شبکه) میگوید پاسخ از کش آمده یا از مبدأ، و age میگوید این رونوشت چند ثانیه است که روی لبه نشسته. معیار سلامت یک استقرار CDN همین است: نسبت HIT به کل درخواستها. نسبتی که پایین بماند یعنی نودها مدام دستبهدامن مبدأ میشوند و شما عملاً فقط یک واسطه به مسیر اضافه کردهاید.
چه محتوایی کش میشود و چه محتوایی نه؟
پاسخ کوتاه: هر چیزی که برای همهی کاربران یکسان است، کاندیدای کش است؛ هر چیزی که برای هر کاربر فرق میکند، نه. جدول زیر مرز را دقیقتر میکشد:
| نوع محتوا | وضعیت کش | توضیح |
|---|---|---|
| تصویر، CSS، جاوااسکریپت، فونت | کش کامل و طولانی | برای همه یکساناند؛ بیشترین سود CDN همینجاست |
| فایلهای حجیم دانلود و ویدیو | کش قطعهقطعه | شبکههای حرفهای فایل را تکهتکه کش میکنند تا جابهجایی در ویدیو کل فایل را دوباره نکشد |
| HTML صفحههای عمومی (مقاله، صفحهی محصول) | کش کوتاهمدت | قابلکش است، اما با عمر کم تا بهروزرسانیها زود دیده شوند |
| HTML شخصیشده (سبد خرید، پیشخوان، حساب کاربری) | کش نمیشود | برای هر کاربر متفاوت است؛ هر بار از مبدأ ساخته میشود |
| درخواستهای POST و APIهای تراکنشی | کش نمیشود | نتیجهشان تغییر وضعیت است، نه محتوا؛ فقط از CDN عبور میکنند |
| WebSocket و اتصالهای زنده | عبور بدون کش | CDN نقش گذرگاه را دارد؛ کش در کار نیست |
این جدول یک پیام پنهان دارد که بعداً به آن برمیگردیم: هرچه سهم محتوای شخصیشده در سایت شما بیشتر باشد — فروشگاهی با کاربرانِ همیشه واردشده، پنل کاربری، ابزار تحت وب — سهم کمتری از ترافیک شما کششدنی است و انتظار شما از CDN باید واقعبینانهتر باشد.
CDN فقط سرعت نیست: سپر سرور مبدأ
نقش دوم شبکه توزیع محتوا کمتر تبلیغ میشود اما در روز مبادا مهمتر است: CDN بین اینترنت و سرور شما میایستد.
جذب ترافیک مخرب پیش از رسیدن به مبدأ
وقتی رکورد عمومی دامنه به نودهای لبه اشاره میکند، سیل درخواست — چه بازدید واقعی و چه حمله — اول به لبه میخورد. نود لبه میتواند برای هر آیپی سقف نرخ درخواست و تعداد اتصال همزمان بگذارد، اتصالهای کند و نیمهباز را ببندد و بار حمله را روی خودش نگه دارد؛ ظرفیتی که یک شبکهی توزیعشده برای جذب این بار دارد، با یک سرور تنها قابلمقایسه نیست. مبدأ در تمام این مدت فقط ترافیک پالودهی نودها را میبیند.
پنهان ماندن آیپی مبدأ
وقتی CDN فعال است، جستوجوی DNS دامنهی شما آیپی نودهای لبه را برمیگرداند، نه آیپی سرور اصلی را. یعنی اسکنهای خودکار و حملههای مستقیم، آدرسی برای هدفگیری ندارند. البته این پنهانکاری مطلق نیست: اگر همان آیپی جای دیگری منتشر شده باشد — رکورد قدیمی DNS، هدر ایمیلهای خروجی سرور، یا سرویسی که آدرس خودش را لو میدهد — قابل ردیابی است. تکمیل این سپر دست خود شماست: دسترسی مستقیم به مبدأ را روی فایروال محدود کنید تا فقط نودهای لبه بتوانند با آن حرف بزنند.
بهینهسازی تصویر روی لبه
نودهای لبه جای خوبی برای کارهای پردازشی تکرارشونده هم هستند و شاخصترینشان تبدیل فرمت تصویر است: تصویر JPEG یا PNG همانجا روی نود به فرمتهای مدرن WebP یا AVIF تبدیل و کش میشود و هر مرورگر، بهترین فرمتی را میگیرد که خودش اعلام کرده میفهمد. صرفهجویی واقعی است — در CDN مهران هاست تصویر ۱۵۸ کیلوبایتی PNG خودِ سایت پس از تبدیل روی نود به ۳۱ کیلوبایت WebP و ۱۶ کیلوبایت AVIF رسیده است — و چون نتیجه کش میشود، هزینهی تبدیل فقط یکبار پرداخت میشود. فشردهسازی Brotli برای متن و استایل و اسکریپت هم از همین جنس است: بهینهسازیای که بدون هیچ تغییری روی سرور شما، روی لبه اتفاق میافتد.
چه کارهایی از CDN برنمیآید؟
بازار پر است از این تصور که CDN دکمهی جادویی سرعت است. نیست، و بهتر است پیش از خرید CDN برای سایت بدانید کجاها دستش بسته است:
- HTML دینامیک همچنان از مبدأ میآید. صفحهای که برای هر کاربر جداگانه ساخته میشود — سبد خرید، نتایج جستوجو، پیشخوان — کششدنی نیست. سرعت این صفحهها به منابع و بهینگی خود سرور شما بستگی دارد و CDN فقط مسیر شبکهاش را مرتب میکند.
- بکاند کند را درمان نمیکند. اگر TTFB صفحهها به این دلیل بالاست که کوئریهای دیتابیس سنگیناند یا افزونهها زیادند، مشکل پیش از رسیدن به شبکه شروع شده است. برای سایت وردپرسی، نقشهی کامل این جراحی را در راهنمای افزایش سرعت وردپرس کشیدهایم.
- جایگزین سرور نیست. اگر مبدأ از دسترس خارج شود، محتوای کششده معمولاً تا مدتی سرو میشود، اما صفحههای تازه و هر عمل دینامیکی از کار میافتد. CDN تابآوری را بیشتر میکند؛ وظیفهی بالا ماندن مبدأ را از دوش شما برنمیدارد.
- معماری بد را نجات نمیدهد. سایتی که برای هر بازدید دهها درخواست غیرقابلکش میسازد، پشت هر CDNای همانقدر سنگین میماند؛ سهم کششدنی ترافیک را خودِ طراحی سایت تعیین میکند.
انتخاب CDN برای سایت با مخاطب ایرانی
تا اینجا بحث عمومی بود؛ اما انتخاب CDN ایرانی یا خارجی یک متغیر مخصوص به خود دارد: کیفیت ناپایدار گذرگاه بینالملل.
نود داخل ایران، بیمهی روزهای اختلال
شبکههای جهانی CDN نود لبه داخل ایران ندارند. یعنی برای بازدیدکنندهی داخل کشور، «نزدیکترین نود» باز هم آنسوی گذرگاه بینالملل است و در دورههای اختلال یا محدودیت پهنای باند بینالملل، همان فایلهای ایستایی که قرار بود از لبه سریع برسند، کند و پرنوسان میرسند — دقیقاً وقتی که به پایداری بیشترین نیاز را دارید. CDNای که نود داخل کشور دارد، این سناریو را برعکس میکند: ترافیک بازدیدکنندهی ایرانی تا محتوای کششده اصلاً از مرز خارج نمیشود و اگر مبدأ هم داخل ایران باشد، مسیر MISS هم داخلی میماند.
روی دیگر: بازدیدکنندهی خارجی را فراموش نکنید
اگر بخشی از مخاطبان بیرون از کشورند، نود داخل ایران بهتنهایی کافی نیست؛ مسیر آنها به نود داخلی همانقدر از گذرگاه بینالملل میگذرد که مسیر کاربر ایرانی به نود اروپایی. شبکهای که همزمان نود داخل ایران و نود اروپا دارد و هر بازدیدکننده را به نود مناسب خودش میفرستد، هر دو گروه را پوشش میدهد — همان معماریای که برای سایت دومخاطبه در مقایسهی هاست ایران و خارج توصیه کردیم.
یک ارائهدهنده یا ترکیب چند شبکه؟
راه دیگری هم هست: ترکیب دو CDN — مثلاً یک شبکهی خارجی برای بازدیدکنندههای جهانی و یک شبکهی داخلی برای کاربران ایران — با تفکیک در سطح DNS. این معماری شدنی است اما هزینهی پنهانش را بشناسید: دو پنل تنظیمات، دو جای پاکسازی کش که باید همزمان انجام شود، دو مسیر جداگانه برای گواهی SSL، و اشکالزداییای که همیشه با سؤال «مشکل از کدام شبکه بود؟» شروع میشود. برای بیشتر سایتها، یک ارائهدهنده که هر دو سمت را با یک پنل و یک کش پوشش دهد، سادهتر و کمخطاتر است؛ ترکیب چند شبکه را برای وقتی نگه دارید که مقیاس یا الزامات خاص، واقعاً به آن نیاز داشته باشد. اگر تفکیک DNS برایتان مبهم است، راهنمای رکوردهای DNS نقطهی شروع خوبی است.
و پیش از هر تصمیمی، وضعیت فعلی را اندازه بگیرید: آزمون سرعت سایت مهران هاست رایگان است، TTFB و مراحل بارگذاری را از دید واقعی نشان میدهد و تشخیص میدهد سایت شما همین حالا پشت CDN هست یا نه.
CDN ایرانی مهران هاست: راهاندازی از پنل DNS در چند دقیقه
حرف آخر ما در این بازار ساده است: فعالکردن CDN نباید بیش از چند دقیقه از وقت شما بگیرد و نباید مجبورتان کند چیزی را جابهجا کنید. در شبکه توزیع محتوای مهران هاست کافی است نِیمسرورهای دامنه به مهران هاست اشاره کند؛ بعد کنار هر رکورد A در پنل DNS یک کلید CDN میبینید — روشنش کنید، آیپی مبدأ ثبت و پنهان میشود، رکورد عمومی به نودهای لبه تغییر میکند و گواهی SSL همان نام ظرف یکی دو دقیقه بهصورت خودکار صادر میشود. هاست یا سرور شما هم لازم نیست اینجا باشد؛ مبدأ میتواند هر جای دنیا بماند.
نودهای لبه در ایران و اروپا مستقرند و هر بازدیدکننده به نود مناسب خودش هدایت میشود — یعنی همان معماری دوسویهای که در بخش قبل توصیه کردیم، بدون ترکیب دو شبکه به دست میآید. کش سه حالت قابلانتخاب دارد و پاکسازی آن برای یک آدرس یا کل دامنه با یک کلیک انجام میشود؛ بهینهسازی تصویر به WebP و AVIF، فشردهسازی Brotli و HTTP/3 روی نودها فعال است و آمار هر سایت — تعداد درخواست، درصد پاسخ از کش، حجم صرفهجوییشده روی مبدأ، به تفکیک نود — بدون ذخیرهی آیپی یا مرورگر بازدیدکننده در پنل دیده میشود. هزینهی جداگانهای هم در کار نیست: روی هر دامنهای که DNS آن به مهران هاست سپرده شده باشد، CDN بخشی از همان سرویس است. جزئیات کامل، فهرست نودها و تأخیرهای اندازهگیریشده را در صفحهی CDN ببینید.
سؤالات پرتکرار
CDN چیست و چه تفاوتی با هاست دارد؟
هاست جایی است که نسخهی اصلی سایت — کد، دیتابیس و فایلها — در آن اجرا میشود؛ CDN شبکهای از نودهای لبه است که رونوشت محتوای ایستای همان سایت را نزدیک کاربران نگه میدارد و درخواستها را از کوتاهترین مسیر پاسخ میدهد. CDN مکمل هاست است، نه جایگزین آن: بدون سرور مبدأ چیزی برای توزیع وجود ندارد و محتوای دینامیک همیشه از مبدأ ساخته میشود.
آیا CDN واقعاً سرعت سایت را افزایش میدهد؟
برای محتوای ایستا — تصویر، استایل، اسکریپت، فونت — بله، و اثرش برای کاربرانی که از مبدأ دورترند بیشتر است، چون تأخیر مسیر را از دهها درخواست حذف میکند. اما HTML شخصیشده و درخواستهای دینامیک همچنان از سرور اصلی میآیند و سرعتشان به منابع همان سرور بستگی دارد. میزان بهبود واقعی به سهم کششدنی ترافیک سایت شما وابسته است، نه به تبلیغ ارائهدهنده.
آیا استفاده از CDN برای سئو مفید است؟
گوگل امتیاز مستقیمی برای داشتن CDN نمیدهد؛ اثر آن غیرمستقیم و از مسیر سرعت است. شاخصهای تجربهی کاربر از مرورگر بازدیدکنندگان واقعی جمع میشوند و وقتی منابع ایستا از نود نزدیک سرو شوند، زمان بارگذاری و شاخصهایی مثل LCP بهبود مییابند — و صفحهی سریعتر در جستوجو، بهویژه در موبایل، وضع بهتری دارد. پس CDN یکی از اهرمهای سرعت است و سرعت یکی از اهرمهای سئو.
برای سایت ایرانی، CDN خارجی بهتر است یا CDN با نود داخل ایران؟
اگر بیشتر بازدیدکنندگان داخل کشورند، نود داخل ایران تفاوت اصلی را میسازد: مسیر کاربر تا محتوای کششده داخلی میماند و در دورههای اختلال ارتباط بینالملل — دقیقاً وقتی شبکههای خارجی کندترین حالتشان را دارند — پایدار است. اگر مخاطب خارجی هم دارید، شبکهای را انتخاب کنید که همزمان نود داخل ایران و اروپا داشته باشد و هر بازدیدکننده را به نود نزدیک خودش بفرستد.
از کجا بفهمم سایتم پشت CDN است و کش آن درست کار میکند؟
هدرهای پاسخ را بررسی کنید: با یک درخواست curl -I به آدرس یک فایل ایستا، هدرهایی مثل x-cache یا معادل آن نشان میدهند پاسخ از کش لبه آمده یا از مبدأ، و Cache-Control عمر کش را میگوید. اگر بیشتر پاسخهای فایلهای ایستا MISS باشد، تنظیمات کش نیاز به بازبینی دارد. ابزار رایگان آزمون سرعت مهران هاست هم استفاده از CDN را تشخیص میدهد و مراحل بارگذاری را تفکیک میکند.