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

בדף הזה מוסבר על ביטול תוקף של מטמון ב-Cloud CDN.

מהו ניקוי מטמון?

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

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

‫Cloud CDN תומך בשימוש בתגי מטמון ובאמצעי השוואה לביטול תוקף, כמו מארח ונתיב כתובת ה-URL, לבקשות לביטול תוקף.

אפשר לשלב בין פרמטרים לאימות כדי לטרגט תגובות ספציפיות שנשמרו במטמון ולצמצם את עומס העבודה בעורף במהלך מילוי המטמון הבא.

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

יש הגבלה על קצב הבקשות לביטול. אפשר לשלוח עד 500 בקשות לביטול תוקף בדקה. כל בקשת ביטול נכנסת לתוקף תוך כ-10 שניות.

ב-Cloud CDN אין הגבלה על מספר האובייקטים או על הגודל הכולל של כל האובייקטים שבוטלו בכל בקשה.

ביטול תוקף לפי כתובות URL

כל בקשת ביטול תוקף מציינת תבנית נתיב שמזהה את האובייקט או את קבוצת האובייקטים שצריך לבטל את התוקף שלהם. תבנית הנתיב יכולה להיות נתיב ספציפי, כמו /cat.jpg, או תחילית של נתיב, כמו /picture*. הכללים הבאים חלים על דפוסי נתיבים:

  • תבנית הנתיב חייבת להתחיל ב-/.
  • היא לא יכולה לכלול את ? או #.
  • הוא לא יכול לכלול את התו * אלא אם הוא התו האחרון.
  • אם נתיב מסתיים ב-*, כל האובייקטים שהנתיבים שלהם מתחילים במחרוזת שלפני * לא יהיו חוקיים יותר. לדוגמה, בנתיב לביטול התוקף /picture*, התחילית היא /picture. כל נתיב אובייקט שמתחיל ב-/picture נפסל, כולל /picture/cat.jpg,‏ /pictures/dog.jpg ו-/picture1.jpg.
  • אם רוצים להוציא משימוש את כל האובייקטים בספרייה, צריך לכלול את התו / בסוף תבנית הנתיב, למשל /pictures/*.

התבנית של הנתיב מושווית לרכיב הנתיב בכתובת ה-URL, שהוא כל מה שמופיע בין שם המארח לבין התו ? או # שעשויים להופיע.

אם יש לכם כתובות URL שמכילות מחרוזת שאילתה, למשל /images.php?image=fred.png, אתם לא יכולים לבטל באופן סלקטיבי אובייקטים ששונים רק במחרוזת השאילתה. לדוגמה, אם יש לכם שתי תמונות, /images.php?image=fred.png ו-/images.php?image=barney.png, אי אפשר לבטל רק את fred.png. כדי לבטל את התוקף של כל התמונות שמוצגות על ידי images.php, צריך להשתמש ב-/images.php כדפוס הנתיב.

ביטול אימות של מארח יחיד

ניקוי המטמון מבטל את התוקף של הנתיב לכל שמות המארחים שלכם. לדוגמה, אם יש לכם example.com ו-example2.com שמפנים לאותו מאזן עומסים, ואתם מבטלים את התוקף של /images/cat.jpg, גם example.com/images/cat.jpg וגם example2.com/images/cat.jpg לא יהיו תקפים.

אפשר להגביל את הביטול רק לאחד מהמארחים על ידי ציון המארח.

ביטול תוקף באמצעות תגי מטמון

תגי מטמון (או מפתחות חלופיים) מאפשרים לכם לבטל תוכן על סמך מטא-נתונים שרירותיים.

התגים האלה מוגדרים בכותרת ה-HTTP‏ Cache-Tag בתגובה של ה-backend. תגי מטמון מהבק-אנד בכותרת תגובת ה-HTTP‏ Cache-Tag נשלחים ללקוח.

יש מגבלות על תגי מטמון:

  • הגודל המקסימלי הוא 120 בייט לכל תג
  • הגודל הכולל של שמות התגים לא יכול לחרוג מ-4 KiB‏ (4,096 בייט) לכל אובייקט שנשמר במטמון
  • אסור לחרוג מ-50 תגים לכל אובייקט

אם חורגים ממגבלות התגים האלה, התשובה לא נשמרת במטמון וההחלטה הזו נרשמת ביומן כ-RESPONSE_CACHE_TAG_INVALID ב-LoadBalancerLogEntry.cacheDecision.

אפשר לציין עד 10 תגי מטמון לכל בקשת ביטול תוקף. אם מציינים כמה תגים בבקשת פסילה אחת, המערכת מתייחסת אליהם כאל OR לוגי. נניח שיש לכם את האובייקטים הבאים ששמורים במטמון:

  • אובייקט מספר 1 שנשמר במטמון עם התגים js, 2020-12-23 ו-prod
  • אובייקט מספר 2 שנשמר במטמון עם התגים css, 2020-11-30 ו-prod
  • אובייקט מספר 3 שנשמר במטמון עם התגים img, 2020-11-30 ו-staging

כשמבקשים לבטל את התוקף של אובייקטים שתואמים ל-tags="prod,2020-11-30", התוקף של כל שלושת האובייקטים שנשמרו במטמון מבוטל. המשמעות של הגישה הזו היא שלא צריך לדעת או לציין את כל השילובים האפשריים של תגים כשרוצים לבטל תוקף של אובייקט.

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

  • אובייקט מספר 1 שנשמר במטמון עם כתובת ה-URL‏ https://staging.example.com/img/cat.jpg והתג a
  • אובייקט מספר 2 שנשמר במטמון עם כתובת ה-URL‏ https://example.com/img/cat.jpg והתג a
  • אובייקט מספר 3 שנשמר במטמון עם כתובת ה-URL‏ https://staging.example.com/js/cat.js והתג a
  • אובייקט מספר 4 שנשמר במטמון עם כתובת ה-URL‏ https://staging.example.com/img/logo.jpg והתג b

כשמבקשים לבטל תוקף של אובייקטים שבהם המארח הוא staging.example.com, הנתיב הוא /img/* והתג הוא a, רק התוקף של אובייקט מספר 1 מבוטל. אובייקטים מס' 2, 3 ו-4 לא תואמים למארח, לנתיב או לתג, בהתאמה.

זמן האחזור של ביטול התוקף

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

שיטות מומלצות

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

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

כחלופה לביטולים שגרתיים, אתם יכולים להגדיר מראש זמני תפוגה מתאימים לתשובות או להשתמש בכתובות URL שונות לגרסאות שונות של התוכן. מידע נוסף על זמני תפוגה זמין במאמר בנושא זמני תפוגה ובקשות אימות.

ביטול תוקף עם הפניה לשירותים בין פרויקטים ב-VPC משותף

ביטול תוקף של מטמון מוגדר בפרויקט הקצה הקדמי, כלומר בפרויקט שכולל את כלל ההעברה, שרת ה-proxy ביעד ו<term ref="High Priority Terms">מפת URL</term> של מאזן העומסים. לכן, כשמשתמשים במאזן עומסים של אפליקציות חיצוני גלובלי עם הפניה לשירותים בפרויקטים שונים ב-VPC משותף, כברירת מחדל, לאדמינים של פרויקטים של שירותים אין את ההרשאות הנדרשות כדי לבקש ביטול תוקף של מטמון.

רק ישויות מורשות שיש להן תפקידים בניהול זהויות והרשאות גישה (IAM) שמאפשרים להן להגדיר משאבי מאזן עומסים (LB) בפרויקטים של קצה קדמי יכולות להנפיק ביטולים של נתונים במטמון – למשל, התפקיד 'אדמין רשת Compute'‏ (roles/compute.networkAdmin).

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

המאמרים הבאים