已更新 1 個月前
בכל פעם שאתה מבקר באתר, המכשיר שלך שואל שאלה: "מה כתובת ה-IP של הדומיין הזה?" בלי שמירה במטמון, הוא היה שואל את השאלה הזו מחדש בכל פעם—גם כשאתה מרענן את אותו הדף שנייה לאחר מכן. שמירת DNS במטמון היא הדרך של המערכת לומר "אני זוכר את התשובה מהפעם הקודמת."
אבל הנה הדבר עם זיכרון: הוא יכול להיות שגוי. כל תשובה שנשמרה במטמון היא הימור שהעולם לא השתנה מאז שאלת לאחרונה.
ההימור
שמירה במטמון הופכת את DNS למהיר. חיפוש חדש לוקח 50-200 מילישניות—הבקשה שלך מקפצת ברחבי האינטרנט לשרתי הסמכות וחזרה. חיפוש ממטמון לוקח פחות ממילישנייה אחת. עבור משהו שקורה לפני כל בקשת ווב בודדת, ההבדל הזה הוא הכל.
אבל מהירות באה במחיר. כשאתה שומר תשובה במטמון, אתה סומך על כך שהתשובה עדיין נכונה. בדרך כלל היא נכונה. לפעמים לא. ואין דרך טובה לדעת מה מהשניים.
ארבע שכבות של זיכרון
שאילתת ה-DNS שלך עוברת דרך ארבעה מטמונים, לכל אחד זיכרון משלו:
הדפדפן שלך זוכר במשך כ-60 שניות. הוא המטמון המהיר ביותר ובעל הזיכרון הקצר ביותר. סגור את הדפדפן, והוא שוכח הכל.
מערכת ההפעלה שלך זוכרת יותר—דקות או שעות. הזיכרון הזה שורד הפעלות מחדש של הדפדפן. ב-Windows, ipconfig /displaydns מציג מה המערכת שלך זוכרת. (macOS לא חושפת את תוכן מטמון ה-DNS ישירות, אבל אפשר לנקות אותו בעת הצורך.)
הרזולבר שלך (בדרך כלל ספק האינטרנט שלך, או שירותים כמו Cloudflare או Google) זוכר בשם מיליוני משתמשים. כשמישהו בעירך מחפש דומיין פופולרי, כולם נהנים מהזיכרון הזה. זהו המטמון בעל ההשפעה הגדולה ביותר—זו הסיבה ש-google.com נפתר מיידית גם אם מעולם לא ביקרת בו בסשן הדפדפן הנוכחי.
שרתי קצה של CDN מוסיפים שכבה נוספת לדומיינים שהם מנהלים. הם אינם חלק מהיררכיה הסטנדרטית, אבל פועלים באותה צורה: זוכרים את התשובה, מגישים אותה מהר.
כל שכבה בודקת את זיכרונה לפני שהיא שואלת את השכבה שמעליה. עבור דומיינים פופולריים, התשובה כמעט תמיד מגיעה ממטמון. עבור דומיינים נדירים, השאלה נוסעת כל הדרך לשרתי הסמכות—ואז נשמרת לפעם הבאה.
TTL: כמה זמן לזכור
כל רשומת DNS מגיעה עם מספר: Time to Live, הנמדד בשניות. זו הדרך של שרת הסמכות לומר "אפשר לסמוך על התשובה הזו למשך זמן זה."
TTL של 3600 פירושו "זכור זאת שעה אחת." TTL של 300 פירושו "שכח בעוד חמש דקות." בעלי דומיינים בוחרים את ה-TTL שלהם על פי מידת היציבות של התשתית שלהם:
- TTL ארוך (שעות עד ימים): פחות שאילתות DNS, ביצועים טובים יותר, אבל שינויים לוקחים זמן רב להתפשט
- TTL קצר (דקות): שינויים נכנסים לתוקף מהר, אבל מעמיסים יותר על מערכת ה-DNS
אתר ייצור יציב עשוי להשתמש ב-TTL של 24 שעות. אתר שעומד להחליף ספק אחסון מוריד ל-60 שניות באופן זמני, ומעלה בחזרה לאחר השלמת ההעברה.
בעיית ההתפשטות
הנה מה שהופך את שמירת DNS במטמון למוזרת באמת: אין כפתור "שכח".
כשאתה משנה רשומת DNS, אין לך אפשרות לשדר הודעה לכל מטמון באינטרנט שתגיד "הפסיקו להאמין לתשובה הישנה." אתה פשוט צריך לחכות. כל מטמון ימשיך לשרת את התשובה הישנה עד שה-TTL שלו יפוג. אם מישהו חיפש את הדומיין שלך לפני שעה עם TTL של 3600 שניות, הוא ימשיך לקבל את התשובה הישנה למשך שעה נוספת—לא משנה מה תעשה.
זהו עיכוב ההתפשטות. זה לא באג; כך המערכת עובדת. ל-DNS אין דרך לחזור בו ממה שנאמר. פשוט ממתינים שכולם יפסיקו להאמין לתשובה הישנה.
מנהלי מערכות חכמים מתכוננים לשינויים מראש. מתכנן להחליף שרתים מחר? הורד את ה-TTL ל-300 שניות היום. כך, כשתבצע את השינוי, מטמון כולם יפוג תוך חמש דקות במקום שעות.
כשההימור משתלם
רוב הזמן, שמירה במטמון היא תועלת טהורה. עבור אתרים יציבים, היא הופכת את DNS מצוואר בקבוק פוטנציאלי למשהו בלתי נראה. מיליוני משתמשים יכולים לבקר באותו דומיין מבלי להעמיס על שרתי הסמכות—רזולברים משרתים 90% ומעלה מהבקשות ממטמון.
בלי שמירת DNS במטמון, האינטרנט היה בלתי שמיש. כל לחיצה הייתה ממתינה לחיפוש חדש. שרתי ה-DNS היו מתמוטטים תחת העומס.
כשההימור מפסיד
בזמן חירום—מתקפות DDoS, כשלי שרתים, העברות דחופות—שמירה במטמון עובדת נגדך. אתה צריך שהתעבורה תעבור עכשיו, אבל המטמונים עדיין מגישים את התשובה הישנה. משתמשים ממשיכים להתחבר לשרת שאינו פעיל כי זה מה שהמטמון שלהם זוכר.
זו הסיבה שמעבר חירום (failover) לרוב עוקף את DNS לחלוטין. כשכל דקה חשובה, המתנה לפקיעת מטמון אינה אפשרות. צוותים משתמשים בפתרונות מבוססי IP או בתשתית שהוכנה מראש.
חלק מהדפדפנים מחמירים את זה על ידי שמירה במטמון מעבר ל-TTL שצוין—טכנית שגוי, אבל זה קורה. זו הסיבה ש"נקה את מטמון ה-DNS שלך" הפכה לעצת פתרון בעיות, גם אם רוב המשתמשים אין להם מושג מה זה אומר.
הפשרה
שמירת DNS במטמון מגלמת מתח יסודי: אפשר לך להיות מהיר או עדכני, אבל לא שניהם לחלוטין.
TTL ארוך נותן לך מהירות על חשבון גמישות. TTL קצר נותן לך גמישות על חשבון מהירות (ועומס DNS גבוה יותר). אין ארוחות חינם—רק כוונון שאפשר לשנות על פי מה שחשוב יותר ברגע זה.
עבור רוב הדומיינים רוב הזמן, עדיף לנטות לעבר TTL ארוך יותר. התשתית שלך כנראה לא משתנה מדי שעה. תן למטמונים לעשות את עבודתם. כששינוי מתקרב, תכנן מראש: הורד את ה-TTL, בצע את השינוי, העלה בחזרה.
האינטרנט פועל על תשובות שנשמרו במטמון. הבנה שאותן תשובות הן הימורים—בדרך כלל נכונים, לפעמים שגויים, תמיד זמניים—עוזרת לך לעבוד עם המערכת במקום להילחם בה.
שאלות נפוצות על שמירת DNS במטמון
איך מנקים את מטמון ה-DNS?
תלוי באיזה שכבה מדובר. עבור הדפדפן, סגירה ופתיחה מחדש בדרך כלל עובדת (או השתמש בניקוי המטמון המובנה של הדפדפן). עבור מערכת ההפעלה: ב-macOS, הרץ sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder; ב-Windows, הרץ ipconfig /flushdns בשורת הפקודה. את מטמון הרזולבר של ספק האינטרנט אי אפשר לנקות—צריך פשוט לחכות שה-TTL יפוג.
למה שינויי DNS לוקחים כל כך הרבה זמן להתפשט?
כי אין דרך להגיד למטמונים לשכוח. כשמשנים רשומת DNS, כל מטמון שכבר מכיל את התשובה הישנה ימשיך לשרת אותה עד שה-TTL יפוג. אם ה-TTL היה 24 שעות, כך גם ייקח ההתפשטות המלאה. כדאי להוריד את ה-TTL לפני ביצוע שינויים כדי לזרז את התהליך.
איזה TTL כדאי להשתמש?
עבור תשתית יציבה, 3600 שניות (שעה אחת) עד 86400 שניות (24 שעות) הוא מקובל. עבור דומיינים שמשתנים לעתים קרובות או במהלך העברות מתוכננות, 60-300 שניות. הפשרה היא תמיד: TTL ארוך יותר פירושו ביצועים טובים יותר אבל עדכונים איטיים יותר; TTL קצר יותר פירושו עדכונים מהירים יותר אבל יותר שאילתות DNS.
האם אפשר לאלץ שינויי DNS להיכנס לתוקף מיידית?
לא. אפשר להוריד את ה-TTL מראש כך שכשמבצעים את השינוי, המטמונים יפוגו מהר. אבל אי אפשר לבטל ערכים שנשמרו במטמון ברחבי האינטרנט. זוהי מגבלה יסודית של אופן פעולת DNS.
此頁面對您有幫助嗎?