CDN (شبکه توزیع محتوا) چیست و چگونه کار می‌کند؟

تاریخ انتشار:

15 دقیقه مطالعه

Acar Diveroli
نویسنده: Acar Diveroli
سرور ORIGIN در مرکز با خط‌چین به چهار کاشی لبه وصل است؛ کاشی آبی EDGE IST با برچسب CACHE HIT به یک لپ‌تاپ پاسخ می‌دهد

فروشگاهی اینترنتی را باز می‌کنید که در قاره‌ای دیگر مستقر است، و عکس محصولات به همان سرعتی ظاهر می‌شوند که در یک سایت داخلی. یا هدرهای پاسخ یک صفحه را نگاه می‌کنید و به سطری مثل cf-cache-status: HIT یا نشانی اسکریپتی برمی‌خورید که با cdn. شروع می‌شود. هر بار یک شبکه توزیع محتوا، که معمولاً به اختصار CDN نامیده می‌شود، میان شما و سایت ایستاده است.

این نوشته توضیح می‌دهد CDN چگونه شما را به سروری نزدیک می‌فرستد، چه چیزهایی را کش می‌کند و چرا، چگونه می‌توان فهمید سایتی از آن استفاده می‌کند و چرا یک صفحه از کشوری دیگر می‌تواند متفاوت به نظر برسد.

CDN چیست؟

CDN شبکه‌ای از سرورها در مکان‌های بسیار است که محتوای یک سایت را از طرف همان سایت و از نقطه‌ای نزدیک به هر بازدیدکننده تحویل می‌دهد. ⁦RFC 3466⁩، یکی از نخستین اسناد IETF درباره شبکه‌های محتوا، این کوته‌نوشت را به دو شکل باز می‌کند: ⁦Content Delivery Network⁩ (شبکه تحویل محتوا) و ⁦Content Distribution Network⁩ (شبکه توزیع محتوا)؛ هر دو نام هنوز به کار می‌روند.

سه اصطلاح بارها تکرار می‌شوند. سرور مبدأ (origin) سرور خود سایت است، جایی که فایل‌های اصلی و خود برنامه سایت قرار دارند. سرور لبه (⁦edge server⁩) ماشینی از CDN است که رو به بازدیدکنندگان قرار دارد، و مرکز داده‌ای که گروهی از این سرورها را در خود جا داده نقطه حضور (⁦point of presence⁩، PoP) نام دارد. کش (cache) انبار نسخه‌هایی است که سرور لبه نگه می‌دارد تا بدون پرسیدن از سرور مبدأ پاسخ دهد.

از CDNهای شناخته‌شده می‌توان Cloudflare، Akamai، Amazon CloudFront و Fastly را نام برد؛ امکانات و قیمت‌هایشان فرق می‌کند، اما همه بر یک اصل کار می‌کنند.

چرا CDN سایت‌ها را سریع‌تر می‌کند؟

CDN صفحه‌ها را بیشتر با کوتاه کردن مسافتی که هر درخواست طی می‌کند سریع‌تر می‌کند. پیش از آنکه نخستین بایت صفحه برسد، مرورگر شما چند رفت‌وبرگشت انجام می‌دهد که هر کدام یک پیام رفت و یک پاسخ برگشت است: پرس‌وجوی DNS، برقراری اتصال TCP، دست‌دادن TLS برای HTTPS و خود درخواست.

وقتی سرور در قاره‌ای دیگر باشد، هر رفت‌وبرگشت طولانی است؛ با سرور لبه‌ای در کشور خودتان هر کدام کوتاه است، و صفحه‌ای با ده‌ها تصویر و اسکریپت این صرفه‌جویی را چند برابر می‌کند. این زمان انتظار را تأخیر (latency) می‌نامند؛ نوشته تأخیر (Latency) چیست؟ روش اندازه‌گیری آن را نشان می‌دهد.

درخواستی که از کش پاسخ می‌گیرد هرگز به سرور مبدأ نمی‌رسد؛ پس کار سرور مبدأ کمتر می‌شود و به درخواست‌هایی که واقعاً به آن نیاز دارند زودتر پاسخ می‌دهد.

CDN گام‌به‌گام چگونه کار می‌کند؟

CDN نشانی سایت را در دست می‌گیرد، هر بازدیدکننده را به یک سرور لبه نزدیک می‌فرستد و هر جا بتواند از کش پاسخ می‌دهد.

  1. صاحب سایت CDN را جلوی سایت قرار می‌دهد. رکوردهای DNS دامنه طوری تغییر می‌کنند که نامی مثل www.example.com به‌جای سرور مبدأ به CDN اشاره کند.
  2. درخواست شما به یک سرور لبه نزدیک هدایت می‌شود، با هدایت DNS، انی‌کست یا هر دو (که در بخش بعد توضیح داده شده‌اند).
  3. سرور لبه اتصال HTTPS را برقرار می‌کند. گواهی دامنه سایت را در اختیار دارد و دست‌دادن TLS را با مرورگر شما کامل می‌کند. اتصال دوم و جداگانه‌ای از CDN به سرور مبدأ برقرار است.
  4. دنبال نسخه ذخیره‌شده می‌گردد. این جست‌وجو با کلید کش (⁦cache key⁩) انجام می‌شود: نشانی فایل، که گاهی با جزئیاتی مثل زبان یا کشور ترکیب می‌شود.
  5. در حالت cache hit، سرور لبه بی‌درنگ پاسخ می‌دهد. نسخه هنوز تازه است، پس سراغ سرور مبدأ نمی‌رود.
  6. در حالت cache miss، سرور لبه از سرور مبدأ می‌پرسد. فایل را همان‌طور که می‌رسد به شما تحویل می‌دهد و اگر هدرهای سرور مبدأ اجازه دهند، نسخه‌ای از آن را برای بازدیدکننده بعدی نگه می‌دارد؛ آمازون این ترتیب را در راهنمای تحویل محتوا در CloudFront شرح داده است.
  7. وقتی نسخه کهنه شد، سرور لبه دوباره بررسی می‌کند. از سرور مبدأ می‌پرسد که فایل تغییر کرده است یا نه؛ فایل تغییرنکرده بدون دانلود دوباره باز هم تحویل داده می‌شود.

CDN چگونه سروری را که به شما پاسخ می‌دهد انتخاب می‌کند؟

CDN سرور لبه شما را یا از راه پاسخ DNS خود انتخاب می‌کند یا از راه مسیریابی اینترنت، روشی که انی‌کست نام دارد.

در هدایت با DNS (⁦DNS steering⁩)، سرور DNS شبکه CDN با نشانی محلی از لبه پاسخ می‌دهد که برای شما انتخاب شده است؛ معمولاً محلی که از جایی که پرس‌وجوی شما آمده کمترین تأخیر را دارد. کسانی که در کشورهای مختلف همان نام را جست‌وجو می‌کنند، آدرس‌های آی‌پی متفاوتی می‌گیرند.

در انی‌کست، CDN همان آدرس‌های آی‌پی را هم‌زمان از مراکز داده بسیار اعلام می‌کند و مسیریابی اینترنت بسته‌های شما را به یکی از آن‌ها می‌رساند؛ ⁦RFC 4786⁩، راهنمای IETF درباره انی‌کست، می‌گوید سامانه مسیریابی تصمیم می‌گیرد کدام گره به هر درخواست پاسخ دهد. این گره معمولاً در جایی نزدیک است، اما نه همیشه نزدیک‌ترین نقطه روی نقشه؛ چون همان‌طور که مستندات Cloudflare یادآوری می‌کند، مسیریابی ارائه‌دهنده اینترنت شما تصمیم می‌گیرد.

CDN چه چیزهایی را کش می‌کند و چه چیزهایی را نه؟

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

قاعده‌ها بیشتر از سرور مبدأ می‌آیند، در هدر پاسخ Cache-Control که در ⁦RFC 9111⁩، استاندارد کش در HTTP، تعریف شده است. CDN یک کش مشترک است، یعنی پاسخ‌ها را برای کاربران بسیار نگه می‌دارد، در حالی که کش مرورگر شما خصوصی است؛ برخی دستورها با این دو متفاوت رفتار می‌کنند:

دستوربه CDN چه می‌گوید
max-age=3600نسخه تا 3,600 ثانیه (یک ساعت) تازه می‌ماند
s-maxage=86400در کش‌های مشترک یک روز تازه می‌ماند؛ آنجا بر max-age مقدم است
privateذخیره نشود: پاسخ فقط برای یک کاربر است
no-storeهیچ‌جا، حتی در مرورگر، ذخیره نشود
no-cacheذخیره مجاز است، اما پیش از هر استفاده باید با سرور مبدأ بررسی شود

CDNها پیش‌فرض‌های خودشان را هم دارند: برای نمونه، Cloudflare تا وقتی صاحب سایت قاعده‌ای اضافه نکند، HTML یا JSON را کش نمی‌کند.

نام فایل‌های ثابت معمولاً یک شماره نسخه یا هش دارد، مثل app.v42.js؛ به این ترتیب می‌توان آن‌ها را ماه‌ها کش کرد و هر انتشار تازه نامی تازه می‌گیرد. راهنمای کش HTTP در MDN همین الگو را توصیه می‌کند. وقتی فایلی باید با همان نام عوض شود، صاحب سایت آن را پاک‌سازی (purge) می‌کند، یعنی از راه داشبورد یا API به CDN می‌گوید نسخه ذخیره‌شده را دور بریزد.

مزایای CDN چیست؟

مزیت‌های اصلی، صفحه‌های سریع‌تر برای بازدیدکنندگان دور، بار کمتر روی سرور مبدأ و مقاومت بیشتر در برابر سیل ترافیک است.

مزیتCDN چگونه به آن می‌رسدچه کسی متوجه می‌شود
تأخیر کمتراز سرور لبه‌ای نزدیک بازدیدکننده پاسخ می‌دهدبازدیدکنندگانی که از سرور مبدأ دورند
سبک شدن بار سرور مبدأدرخواست‌هایی که از کش پاسخ می‌گیرند به سرور مبدأ نمی‌رسندسرورهای سایت
جذب حمله DDoSترافیک حمله میان مکان‌های بسیار پخش می‌شودسایت در دسترس می‌ماند
TLS در لبهدست‌دادن HTTPS نزدیک بازدیدکننده انجام می‌شودبازدیدکنندگان و مدیران سایت

حمله منع سرویس توزیع‌شده (DDoS) سایت را هم‌زمان با ترافیکی از ماشین‌های بسیار غرق می‌کند؛ پشت یک CDN با انی‌کست، این سیل به‌جای یک سرور روی مراکز داده بسیار فرود می‌آید. بسیاری از CDNها فایروال برنامه وب (WAF) هم دارند؛ فیلتری که الگوهای شناخته‌شده حمله را پیش از رسیدن به سرور مبدأ مسدود می‌کند.

این مزیت‌ها بی‌هزینه نیستند. چون CDN اتصال HTTPS را خودش پایان می‌دهد، می‌تواند ترافیکی را که از آن می‌گذرد بخواند، و وقتی یک CDN بزرگ از کار می‌افتد، سایت‌های زیادی هم‌زمان از دسترس خارج می‌شوند.

آیا CDN یک ریورس پروکسی است؟

بله. CDN یک ریورس پروکسی است، یعنی سروری که جلوی یک سایت می‌ایستد و از طرف آن به بازدیدکنندگان پاسخ می‌دهد، با این تفاوت که در مقیاس جهانی کار می‌کند. فوروارد پروکسی برعکس است: جلوی کاربر می‌ایستد و از طرف او درخواست می‌فرستد؛ نوشته فوروارد پروکسی و ریورس پروکسی: تفاوت در چیست؟ این دو را کنار هم مقایسه می‌کند.

چون CDN چهره بیرونی سایت است، آدرس آی‌پی سرور مبدأ را پنهان می‌کند، نه آدرس شما را. CDN آدرس شما را در هدرهایی مثل X-Forwarded-For یا CF-Connecting-IP در Cloudflare به سرور مبدأ می‌رساند.

چگونه بفهمیم یک سایت از CDN استفاده می‌کند؟

سریع‌ترین راه، بررسی هدرهای پاسخ است؛ بیشتر CDNها در آنجا سطرهایی اضافه می‌کنند که نام خودشان و نتیجه کش را نشان می‌دهد. در ویندوز، Command Prompt (خط فرمان) را باز کنید و curl -I را همراه با نشانی سایت اجرا کنید (در PowerShell بنویسید curl.exe -I، چون آنجا curl به‌تنهایی فرمان دیگری را اجرا می‌کند). گزینه -I فقط هدرها را درخواست می‌کند. این پاسخی است که رایانه آزمایشی ما از example.com گرفت، به شکل کوتاه‌شده:

bash
HTTP/1.1 200 OK
Date: Sun, 15 Nov 2026 13:46:55 GMT
Content-Type: text/html; charset=utf-8
Server: cloudflare
last-modified: Thu, 12 Nov 2026 21:56:22 GMT
Age: 14266
cf-cache-status: HIT
CF-RAY: a5aeb470a9822346-IST
  • Server: cloudflare نام CDN جلوی سایت را می‌گوید.
  • cf-cache-status: HIT یعنی سرور لبه از کش خودش پاسخ داده است. در فهرست وضعیت‌های کش در Cloudflare مقدارهای دیگری هم هست، از جمله MISS (از سرور مبدأ گرفته شده) و DYNAMIC (قابل کش شدن نیست).
  • Age: 14266 یعنی نسخه 14,266 ثانیه پیش، کمی کمتر از چهار ساعت، از سرور مبدأ گرفته یا در آنجا تأیید شده بود. چند دقیقه بعد همان فرمان Age: 41 را نشان داد، یعنی نسخه‌ای که 41 ثانیه پیش تازه شده بود.
  • CF-RAY به یک کد سه‌حرفی فرودگاه ختم می‌شود که مرکز داده پردازش‌کننده درخواست را نشان می‌دهد؛ به رایانه آزمایشی ما مرکز داده استانبول (IST) پاسخ داد.

CDNهای دیگر نام‌های دیگری به کار می‌برند، مثل X-Cache با مقدار HIT یا MISS، X-Served-By یا Via. ⁦RFC 9211⁩ هم برای همین کار هدر استاندارد Cache-Status را تعریف می‌کند.

اگر نمی‌خواهید از خط فرمان استفاده کنید، سراغ مرورگر بروید. در کروم کلید F12 را بزنید، پنل Network (شبکه) را انتخاب کنید و صفحه را دوباره بارگذاری کنید. روی یک فایل در ستون Name (نام) کلیک کنید، زبانه Headers (هدرها) را باز کنید و بخش Response Headers (هدرهای پاسخ) را بخوانید.

صفحه خطای CDN یعنی چه؟

صفحه خطای CDN معمولاً یعنی درخواست شما به CDN رسیده، اما CDN از سرور مبدأ پاسخ درستی نگرفته است. صفحه خود CDN را می‌بینید، چون سروری که مرورگر شما با آن حرف می‌زند همان CDN است. صفحه‌های 520 تا 526 در Cloudflare رایج‌ترین نمونه‌اند؛ نوشته خطاهای Cloudflare: کدهای 520، 521، 522 و 524 یعنی چه؟ هر کد را توضیح می‌دهد.

سایتی که پس از به‌روزرسانی هنوز نسخه قدیمی را نشان می‌دهد نشانه کش است، نه خطا: نسخه ذخیره‌شده هنوز منقضی یا پاک‌سازی نشده است.

CDNها را کجا می‌بینید؟

  • سایت‌های خبری، فروشگاه‌ها و وبلاگ‌ها: تصویرها و فایل‌های استایل، اغلب از نشانی‌ای که با cdn. یا static. جلوی دامنه شروع می‌شود.
  • به‌روزرسانی نرم‌افزارها و اپلیکیشن‌ها: دانلودهای بزرگی که دستگاه‌های زیادی هم‌زمان دریافت می‌کنند.
  • ویدیوی آنلاین: پخش‌کننده‌ها قطعه‌های کوتاه را دریافت می‌کنند و سرور لبه آن‌ها را مثل هر فایل دیگری کش می‌کند.
  • «لینک‌های CDN» در صفحه‌های وب: تگ <script> یا <link> که یک کتابخانه یا فونت را از یک CDN عمومی بارگذاری می‌کند.

چرا CDN در کشورهای مختلف محتوای متفاوتی نشان می‌دهد؟

CDN بر پایه کشور محتوای متفاوت نشان می‌دهد، چون سرور لبه موقعیت هر بازدیدکننده را از آدرس آی‌پی او تخمین می‌زند و سایت از این تخمین برای انتخاب زبان، واحد پول، قیمت یا تبلیغ استفاده می‌کند. برای نمونه، Amazon CloudFront می‌تواند کشور بازدیدکننده را، که از آدرس آی‌پی به دست آمده، در هدر CloudFront-Viewer-Country به سرور مبدأ بفرستد؛ Cloudflare هم هدر مشابه CF-IPCountry را می‌فرستد. سایت می‌تواند کشور را به کلید کش اضافه کند تا هر کشور نسخه کش‌شده خودش را داشته باشد.

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

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

اشتباه‌های رایج

  • کش کردن صفحه‌هایی با اطلاعات شخصی. صفحه‌ای که پس از ورود به حساب بدون private یا no-store فرستاده شود، ممکن است به بازدیدکننده بعدی نشان داده شود.
  • زمان کش طولانی برای فایل‌هایی که نامشان عوض نمی‌شود. بازدیدکنندگان تا زمان انقضا فایل قدیمی را می‌گیرند؛ نام را نسخه‌دار کنید یا فایل را پاک‌سازی کنید.
  • باز گذاشتن سرور مبدأ برای همه. هر کسی آدرس آی‌پی آن را پیدا کند می‌تواند از CDN بگذرد؛ فقط به آدرس‌های CDN اجازه دسترسی بدهید.
  • انتظار اینکه CDN بازدیدکننده را پنهان کند. CDN سرور مبدأ را پنهان می‌کند؛ سایت همچنان آدرس آی‌پی شما را دریافت می‌کند.
  • آزمودن محتوای منطقه‌ای فقط از دفتر کار. CDN یک کشور را می‌بیند و نسخه همان کشور را تحویل می‌دهد.

راهنمای انتخاب

وضعیت شماچه کنید
بازدیدکنندگان نزدیک سرور شما هستند و صفحه‌ها سبک‌اندCDN اختیاری است؛ اول اندازه بگیرید
بازدیدکنندگان در چند قارهیک CDN جلوی سایت بگذارید
تصویر، ویدیو یا فایل دانلودی زیادفایل‌های ثابت را با نام نسخه‌دار برای ماه‌ها کش کنید
صفحه‌هایی که برای هر کاربر فرق می‌کنندآن‌ها را private علامت بزنید؛ بخش‌های ثابت را کش کنید
بازدیدکنندگان هنوز فایل قدیمی را می‌بینندفایل را پاک‌سازی کنید یا نامش را عوض کنید
دیدن آنچه بازدیدکنندگان کشوری دیگر می‌بیننددرخواست را از یک آدرس آی‌پی در همان کشور بفرستید

پرسش‌های متداول

CDN مخفف چیست؟

CDN مخفف ⁦content delivery network⁩ است که در فارسی «شبکه توزیع محتوا» یا «شبکه تحویل محتوا» گفته می‌شود. شکل ⁦content distribution network⁩ را هم می‌بینید؛ ⁦RFC 3466⁩ هر دو را آورده است و هر دو به یک سامانه از سرورهای لبه اشاره دارند.

آیا CDN همان هاست (میزبانی وب) است؟

خیر. هاست سرور مبدأ را اجرا می‌کند، یعنی سروری که فایل‌های اصلی، پایگاه داده و کد سایت روی آن است؛ CDN جلوی آن قرار می‌گیرد و نسخه‌هایی را نزدیک بازدیدکنندگان نگه می‌دارد. برخی شرکت‌ها هر دو را می‌فروشند و به همین دلیل این دو با هم اشتباه گرفته می‌شوند.

آیا CDN آدرس آی‌پی مرا پنهان می‌کند؟

خیر. CDN آدرس آی‌پی سرور مبدأ را از بازدیدکنندگان پنهان می‌کند، نه آدرس شما را از سایت. سرور لبه آدرس آی‌پی شما را در هدرهایی مثل X-Forwarded-For به سرور مبدأ می‌رساند و از آن برای تخمین کشورتان استفاده می‌کند. برای فرستادن درخواست از آدرس آی‌پی دیگری به یک فوروارد پروکسی یا VPN نیاز دارید.

آیا Cloudflare یک CDN است؟

بله. Cloudflare یک CDN را اداره می‌کند و خدمات DNS و امنیتی هم ارائه می‌دهد، از جمله محافظت در برابر DDoS و فایروال برنامه وب. به همین دلیل نامش روی صفحه‌های خطا و تأیید دیده می‌شود: Cloudflare همان ریورس پروکسی‌ای است که مرورگر شما با آن حرف می‌زند.

تفاوت CDN و کش چیست؟

کش هر انباری از نسخه‌هاست که نگه داشته می‌شود تا یک چیز دو بار دریافت نشود؛ مرورگر شما هم یکی دارد. CDN شبکه‌ای از کش‌های مشترک در مکان‌های بسیار است، به‌علاوه مسیریابی‌ای که هر بازدیدکننده را به یکی از آن‌ها می‌فرستد و ابزارهایی که به صاحب سایت امکان می‌دهند قاعده تعیین کند و نسخه‌ها را پاک‌سازی کند.

آیا یک سایت کوچک به CDN نیاز دارد؟

همیشه نه. اگر بیشتر بازدیدکنندگان نزدیک سرور شما باشند و صفحه‌ها سبک باشند، سود آن ممکن است کم باشد؛ اگر در کشورهای مختلف پراکنده باشند یا سایت تصویرها یا فایل‌های بزرگ زیادی ارائه دهد، CDN معمولاً کمک می‌کند. از جایی که بازدیدکنندگانتان هستند اندازه بگیرید و ببینید هاست شما گزینه CDN دارد یا نه.

خلاصه

CDN شبکه‌ای از سرورهای لبه است که نسخه‌هایی از یک سایت را نزدیک بازدیدکنندگان نگه می‌دارد و به‌جای سرور خود سایت، یعنی سرور مبدأ، پاسخ می‌دهد. هدایت با DNS یا انی‌کست شما را به یک سرور لبه نزدیک می‌فرستد؛ این سرور در حالت cache hit از کش پاسخ می‌دهد و در حالت cache miss از سرور مبدأ می‌پرسد و در هر دو حالت از قاعده‌های Cache-Control سایت پیروی می‌کند. هدرهایی مثل cf-cache-status و Age کار آن را نشان می‌دهند. چون CDN آدرس آی‌پی شما را می‌خواند تا محتوا را بر اساس کشور انتخاب کند، بررسی صفحه‌های یک بازار دیگر یعنی فرستادن درخواست از همان بازار؛ محصولات پروکسی ما موقعیت‌های لازم برای این کار را پوشش می‌دهند.

پرسش از ChatGPTپرسش از Claude