לדלג לתוכן

איך CDN באמת מאיץ אתרים - למה קובץ שיושב בקצה השני של העולם מגיע אליכם מהר

אתם נכנסים לאתר שהשרת המקורי שלו יושב בגרמניה, ואתם באמריקה הדרומית, והדף עולה תוך פחות משנייה. פיזיקה בסיסית אומרת שמידע לא יכול לנוע מהר יותר ממהירות האור, אז איך זה בכלל אפשרי? התשובה היא שהתוכן בכלל לא הגיע מגרמניה. הוא הגיע משרת שיושב הרבה יותר קרוב אליכם, וזה בדיוק מה ש-CDN, רשת הפצת תוכן, עושה.

הרעיון הבסיסי - להעתיק תוכן קרוב יותר למשתמש

CDN, ראשי תיבות של Content Delivery Network, הוא רשת של אלפי שרתים, שנקראים שרתי קצה (edge servers), שפזורים גיאוגרפית בכל העולם. במקום שכל בקשה תלך עד השרת המקורי (origin server), היא נעצרת בשרת הקצה הקרוב ביותר למיקום שלכם, שמחזיק כבר עותק של התוכן. פחות מרחק פיזי שהמידע צריך לעבור, פחות זמן זה לוקח.

זה עובד מצוין בעיקר לתוכן שלא משתנה כל הזמן - תמונות, קבצי CSS ו-JavaScript, סרטונים, ולעיתים גם דפי HTML שלמים שנוצרים מראש. תוכן דינמי שמשתנה לכל משתמש, כמו תוצאות של חיפוש אישי, בדרך כלל עדיין חייב להגיע מהשרת המקורי.

איך הדפדפן שלכם מגיע לשרת הקצה הנכון

הקסם קורה כבר ברמת ה-DNS. כשאתם פונים לכתובת של אתר שמשתמש ב-CDN, שרת ה-DNS לא מחזיר תמיד את אותה כתובת IP לכולם - הוא מחזיר לכל משתמש כתובת של שרת קצה שונה, בהתאם למיקום הגיאוגרפי המשוער שלו. הטכניקה הנפוצה ביותר לזה נקראת Anycast - אותה כתובת IP בדיוק מוכרזת מכמה מיקומים ברחבי העולם, ותשתית הרשת עצמה מנתבת אתכם אוטומטית לעותק הקרוב ביותר, בדיוק כמו שחיוג למספר שירות ארצי מחבר אתכם לסניף הקרוב ביותר אליכם ולא תמיד לאותו מוקד פיזי.

Cache Hit מול Cache Miss - מה קורה כששרת הקצה לא מחזיק את הקובץ

לא כל בקשה מסתיימת מיד בשרת הקצה. כשמבקשים קובץ ששרת הקצה כבר שמר אצלו, זה נקרא Cache Hit, והתשובה חוזרת מהר מאוד. אבל אם זו הפעם הראשונה שמישהו מבקש קובץ מסוים דרך שרת קצה מסוים, זה נקרא Cache Miss - שרת הקצה עצמו פונה לשרת המקורי, מביא את הקובץ, שומר עותק אצלו לפעם הבאה, ורק אז מחזיר אותו למשתמש. זו הסיבה שלפעמים בקשה ראשונה לקובץ מסוים ממיקום חדש איטית קצת יותר מהבקשות שאחריה - שרת הקצה עוד לא "למד" את הקובץ הזה.

מתי CDN שומר תוכן ומתי הוא זורק אותו

כל קובץ שנשמר בשרת קצה מקבל זמן תפוגה, שמוגדר בכותרות (headers) שהשרת המקורי שולח יחד עם הקובץ. אחרי שהזמן הזה עובר, שרת הקצה בודק מול השרת המקורי אם יש גרסה חדשה יותר, לפני שהוא ממשיך להגיש את הגרסה הישנה. הגדרת זמני תפוגה נכונים היא בדיוק האיזון בין "לחסוך כמה שיותר פניות לשרת המקורי" לבין "לא להגיש למשתמשים תוכן מיושן".

למה CDN הוא הרבה יותר מ"מהירות"

מעבר להאצת הטעינה, CDN נותן גם הגנה - כשיש עומס חריג או התקפת מניעת שירות (DDoS), רוב הבקשות נבלמות ומטופלות בשרתי הקצה, ורק שבריר קטן מגיע בכלל לשרת המקורי, שנשאר מוגן מהעומס העיקרי. זו הסיבה שכמעט כל אתר גדול היום עובד מאחורי CDN, לא רק בגלל מהירות, אלא גם בגלל עמידות.

הבנה של איך תעבורה זזה ברשת, איך DNS מנתב אתכם, ומה קורה כשקובץ נשמר או נזרק ממטמון, היא בדיוק הבסיס שאנחנו בונים בקורס הרשתות שלנו, שלב אחר שלב.

קורס הרשתות המלא נמצא כאן, חינם ובעברית, עם תרגול אמיתי על תעבורת רשת.

יש לכם שאלה על למה אתר איטי ממקום מסוים ומהיר ממקום אחר? שאלו בדיסקורד.

הצטרפו לקהילה בדיסקורד

לסיכום

CDN לא "מאיץ את האינטרנט", הוא מקצר את המרחק שהמידע צריך לעבור, על ידי החזקת עותקים של תוכן במאות שרתי קצה פזורים בעולם, וניתוב חכם שמביא אתכם לעותק הקרוב ביותר. Cache Hit מהיר, Cache Miss קצת פחות, וזמני תפוגה נכונים הם ההבדל בין CDN שבאמת עוזר לבין אחד שמגיש תוכן מיושן.