آموزشآموزش شبکه به زبان ساده

درس ۶۷ از ۹۹، شبکه و اینترنت، حدود ۱۱ دقیقه خواندن

CDN چیست

جواب کوتاه

CDN (Content Delivery Network، شبکه‌ی توزیع محتوا) شبکه‌ای از سرورها در جاهای مختلف است که نسخه‌ای از فایل‌های سایت شما را نزدیک بازدیدکننده‌ها نگه می‌دارد. هر بازدیدکننده از سرور نزدیک خودش جواب می‌گیرد، نه از هاست اصلی که شاید دور باشد؛ پس صفحه زودتر باز می‌شود و بار سرور اصلی کم می‌شود. هر نسخه تاریخ انقضا دارد و می‌شود آن را پاک کرد. Cloudflare یکی از CDNهاست که حدود یک‌پنجم سایت‌های اینترنت از آن استفاده می‌کنند.

نام

CDN کوتاه‌شده‌ی Content Delivery Network است: «شبکه‌ی توزیع محتوا». شبکه‌ای از سرورها در شهرها و کشورهای مختلف، که نسخه‌ای از فایل‌های سایت شما را نزدیک بازدیدکننده‌ها نگه می‌دارد. CDNها در اواخر دهه‌ی ۱۹۹۰ پیدا شدند، تا اینترنت برای سایت‌های پربازدید کند نشود.

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

پنج کلمه

  • سرور اصلی (origin)سروری که سایت واقعا روی آن است؛ همان هاست شما. نسخه‌ی اصل هر فایل این‌جاست.
  • سرور لبه (edge)سرور CDN در جایی نزدیک بازدیدکننده، که نسخه‌ای از فایل‌ها را نگه می‌دارد و جواب می‌دهد.
  • کش (cache)نسخه‌ی نگه‌داشته‌ی یک فایل، تا دفعه‌ی بعد از نو گرفته نشود.
  • hit و misshit یعنی لبه نسخه داشت و همان‌جا جواب داد؛ miss یعنی نداشت و از سرور اصلی گرفت.
  • تاریخ انقضا (max-age)مدتی که سرور اصلی می‌گوید یک نسخه «تازه» است؛ بعد از آن، کهنه حساب می‌شود.

چاپخانه و دکه‌ها

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

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

بی CDN و با CDN

فرض کنید سرور سایت شما در یک شهر است و بازدیدکننده‌ای در شهری دور. هر درخواست او راه دوری می‌رود و برمی‌گردد (درس پهنای باند و پینگ). و اگر هزار نفر هم‌زمان بیایند، همه به همان یک سرور فشار می‌آورند.

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

پس CDN سه سود دارد: صفحه زودتر باز می‌شود، هزینه‌ی پهنای باند سرور اصلی کمتر می‌شود، و محتوا بیشتر در دسترس می‌ماند. بعضی CDNها هزاران «نقطه‌ی حضور» (PoP) دارند، هر کدام با سرورهای لبه‌ی خودش، اغلب در همان دیتاسنترهایی که در درس دیتاسنتر دیدید.

یک درخواست، قدم‌به‌قدم

فرض کنید کسی عکس یک محصول را در سایت شما باز می‌کند:

۱. بازدیدکننده نشانی سایت را باز می‌کند. CDN او را، معمولا با DNS یا anycast، به نزدیک‌ترین سرور لبه می‌فرستد.
۲. اگر لبه نسخه‌ای تازه از آن فایل داشته باشد (hit)، همان‌جا جواب می‌دهد؛ سرور اصلی اصلا خبردار نمی‌شود.
۳. اگر نداشته باشد (miss)، لبه از سرور اصلی می‌گیرد، یک نسخه برای خودش نگه می‌دارد، و به بازدیدکننده می‌دهد.
۴. بازدیدکننده‌ی بعدی از همان محله، تا وقتی نسخه تازه است، از همان لبه جواب می‌گیرد.

تازه و کهنه

هر نسخه در لبه تاریخ دارد. سرور اصلی با یک سربرگ HTTP به نام Cache-Control: max-age می‌گوید یک پاسخ چند ثانیه «تازه» است. تا وقتی تازه است، لبه بی پرسیدن از سرور اصلی همان را می‌دهد. وقتی کهنه شد، لبه دوباره از سرور اصلی می‌پرسد؛ مثل روزنامه‌ی دیروز که دکه دیگر نمی‌فروشد.

پرسیدن دوباره همیشه یعنی گرفتن دوباره‌ی کل فایل نیست. لبه می‌پرسد «از فلان وقت عوض شده؟»؛ اگر نشده باشد، همان نسخه دوباره تازه می‌شود.

پاک کردن کش

فرض کنید عکس محصولی را عوض کرده‌اید، ولی بازدیدکننده‌ها هنوز عکس قدیمی را می‌بینند. دلیلش این است که لبه‌ها نسخه‌ی قدیمی را هنوز تازه می‌دانند. راه‌حل «پاک کردن کش» (purge) است: از CDN می‌خواهید نسخه‌ها را دور بریزد، تا درخواست بعدی دوباره از سرور اصلی گرفته شود؛ مثل چاپخانه‌ای که روزنامه‌ی غلط‌دار را از همه‌ی دکه‌ها جمع می‌کند.

چه چیزی کش می‌شود، و چه چیزی نه

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

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

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

کار دیگر CDN: سپر

CDN جلوی سرور اصلی می‌ایستد. برای همین خیلی از CDNها کار امنیتی هم می‌کنند: مقابله با حمله‌ی DDoS، که با سیل درخواست می‌خواهد سرور را از کار بیندازد، و فایروال برنامه‌ی وب (WAF). سرورهای لبه جلوی سیل می‌ایستند، تا سرور اصلی در امان بماند.

CDN کارهای دیگری هم می‌کند، مثل پخش ویدیو و پخش بار میان چند سرور.

Cloudflare

در این کتابخانه، از میان CDNها فقط از Cloudflare نام می‌بریم. Cloudflare در ۲۰۰۹ پایه‌گذاری شد. خدماتش، از جمله CDN، بیشتر مثل یک «پراکسی معکوس» کار می‌کند: میان بازدیدکننده‌ی سایت و هاست سایت می‌نشیند، سایت را سریع‌تر می‌کند و جلوی ترافیک بدخواه را می‌گیرد.

مقابله با DDoS را هم رایگان دارد و هم پولی، و DNS عمومی 1.1.1.1 هم مال آن است. طبق آمار W3Techs، در ژانویه‌ی ۲۰۲۶ حدود ۲۱٫۳ درصد سایت‌های اینترنت از Cloudflare استفاده می‌کردند.

سه اشتباه

  • «CDN همان DNS است.»DNS نام سایت را به نشانی IP می‌رساند؛ CDN خود فایل‌ها را نزدیک شما نگه می‌دارد. CDN گاهی از DNS کمک می‌گیرد تا شما را به نزدیک‌ترین سرور بفرستد.
  • «با CDN، سرور اصلی لازم نیست.»سرورهای لبه نسخه‌ها را از سرور اصلی می‌گیرند. سایت همچنان روی هاست شماست؛ CDN فقط نسخه‌هایش را نزدیک بازدیدکننده می‌برد.
  • «عکس را عوض کردم و هنوز قدیمی است؛ پس CDN خراب است.»نسخه‌ی قدیمی هنوز تازه حساب می‌شود. صبر کنید تا تاریخ انقضایش تمام شود، یا کش را پاک کنید.

جمع‌بندی. آنچه از این درس با خودتان می‌برید.

  • CDN: سرورهای لبه در جاهای مختلف، با نسخه‌ای از فایل‌های سایت.
  • بازدیدکننده از نزدیک‌ترین لبه جواب می‌گیرد؛ سرور اصلی کمتر کار می‌کند.
  • hit: لبه نسخه دارد؛ miss: از سرور اصلی می‌گیرد و نگه می‌دارد.
  • هر نسخه تا max-age تازه است؛ بعد کهنه می‌شود و دوباره پرسیده می‌شود.
  • پاک کردن کش نسخه‌های کهنه را از همه‌ی لبه‌ها دور می‌ریزد.
  • چیزی که برای هر کس فرق دارد، در کش مشترک نمی‌ماند.

خودتان را بسنجید

۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخر آزمون فقط کارنامه را می‌بینید: چند درست، چند نادرست.

خودتان را بسنجید

۱۵ پرسش

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

فصل‌های این درس

درس بعد