בדף הזה מוסבר איך להשתמש ב-negative caching עם Cloud CDN. שמירת נתונים במטמון של תשובות שליליות מאפשרת להגדיר זמן חיים (TTL) שונה לכל קוד סטטוס.
הסיבה לכך היא להחיל שליטה מדויקת על שמירת נתונים במטמון עבור שגיאות נפוצות או הפניות אוטומטיות. כך אפשר להפחית את העומס על מקורות התוכן ולשפר את חוויית המשתמש על ידי הפחתת זמן האחזור של התגובה.
לפני שמתחילים
מוודאים ש-Cloud CDN מופעל. הוראות מפורטות זמינות במאמר שימוש ב-Cloud CDN.
אם צריך, מעדכנים לגרסה האחרונה של Google Cloud CLI:
gcloud components update
קודי סטטוס וערכי TTL שמוגדרים כברירת מחדל
שמירת מטמון שלילית חלה על קודי סטטוס ספציפיים, שמפורטים בטבלה הבאה.
Cloud CDN מחיל את ערכי ה-TTL הבאים כברירת מחדל על קודי הסטטוס האלה:
| קוד סטטוס | משמעות | TTL |
|---|---|---|
| HTTP 300 | שאלות אמריקאיות | 10 דקות |
| HTTP 301 ו-308 | הפניות קבועות | 10 דקות |
| HTTP 302 ו-307 | הפניות זמניות | לא נשמר במטמון כברירת מחדל |
| HTTP 404 | הקובץ לא נמצא | 120 שניות |
| HTTP 405 | Method not found | 60 שניות |
| HTTP 410 | נעלם | 120 שניות |
| HTTP 451 | לא זמין מסיבות משפטיות | 120 שניות |
| HTTP 501 | לא בוצע יישום | 60 שניות |
אפשר לשנות את ערכי ברירת המחדל האלה באמצעות negative caching כדי להגדיר TTL של מטמון לקוד סטטוס של HTTP שצוין.
הגדרת negative caching
Negative caching מאפשר לכם להגדיר את השירות כך שיאחסן במטמון גם כשלים וגם הצלחות. כך Cloud CDN יכול להגן על מקורות מבקשות שיוצרות שגיאות (כמו 404 Not Found) באותו אופן שבו הוא מגן על מקורות מבקשות שיוצרות תגובות מוצלחות.
המסוף
- נכנסים לדף Load Balancing במסוף Google Cloud .
- לוחצים על השם של מאזן העומסים החיצוני של האפליקציות.
- לוחצים על Edit .
- בקטע Backend configuration, בוחרים קצה עורפי ולוחצים על Edit (עריכה) .
- מוודאים שהאפשרות Enable Cloud CDN (הפעלת Cloud CDN) מסומנת.
- בחלק התחתון של החלון, לוחצים על הגדרות מתקדמות.
- לוחצים על הפעלת negative caching.
- לוחצים על הוספה של מדיניות שלילית בנושא שמירת נתונים במטמון.
- מזינים קוד סטטוס של HTTP.
- בוחרים אורך חיים (TTL) של מטמון.
- לוחצים על עדכון.
- לוחצים שוב על עדכון.
gcloud
למאגרי backend, משתמשים בפקודה gcloud compute backend-buckets create או gcloud compute backend-buckets update עם הדגל --negative-caching.
בשירותים לקצה העורפי, משתמשים בפקודה gcloud compute backend-services create או gcloud compute backend-services update עם הדגל --negative-caching.
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
--negative-caching
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
--negative-caching
כדי להפעיל negative caching של שתי תשובות שגיאה ספציפיות בלבד, למשל, מגדירים שתשובות עם קוד סטטוס 404 יישמרו במטמון למשך 60 שניות, ותשובות עם קוד סטטוס 405 יישמרו במטמון למשך 120 שניות.
gcloud compute backend-services update BACKEND_SERVICE_NAME \
--negative-caching \
--cache-mode=CACHE_ALL_STATIC \
--default-ttl=86400 \
--negative-caching-policy='404=60,405=120'
api
כדי להשתמש בקטגוריות של שרתים עורפיים, צריך להשתמש בקריאה ל-API של Method: backendBuckets.insert או Method: backendBuckets.update.
בשירותי קצה עורפי, משתמשים ב-Method: backendServices.insert או ב-Method: backendServices.update כדי לבצע קריאה ל-API.
משתמשים באחת מהקריאות הבאות ל-API:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
מוסיפים את הקטע הבא לגוף בקשת ה-JSON:
"cdnPolicy": {
"negativeCaching": ON,
"negativeCachingPolicy": [
{
"code": STATUS_CODE,
"ttl": TTL_SECONDS
}
]
}
כדי להגדיר את ההגדרות של negativeCachingPolicy, צריך להפעיל את האפשרות 'שמירת נתונים במטמון של תשובות שליליות'. אם לא מציינים את המדיניות והאפשרות negativeCaching מופעלת, Cloud CDN משתמש בערכי ברירת המחדל שמופיעים במאמר קודי סטטוס וערכי TTL של ברירת מחדל.
כשמציינים מדיניות שלילית של שמירת נתונים במטמון, חשוב לציין זמן TTL של מטמון עבור כל קודי התגובה שרוצים לשמור במטמון. אם קיימת מדיניות, Cloud CDN לא מחיל שום negative caching שמוגדר כברירת מחדל.
אפשר לציין את קודי המצב הבאים של HTTP עבור STATUS_CODE:
300,301,302,307,308404,405,410,421,451501
לכל קוד סטטוס אפשר לציין מספר שניות לשמירת התגובות במטמון. כדי להשבית את negative caching עבור קוד הסטטוס, צריך להחריג את הקוד ממדיניות negative caching.
הערך המקסימלי המותר הוא 1,800 שניות (30 דקות). עם זאת, יכול להיות שאובייקטים שלא ניגשים אליהם לעיתים קרובות יוסרו מהמטמון לפני תפוגת ה-TTL שהוגדרה.
כשמצב המטמון מוגדר ל-CACHE_ALL_STATIC או ל-USE_ORIGIN_HEADERS, המטמון השלילי חל על תגובות עם קודי סטטוס ספציפיים של HTTP, כמו 302, 404 או 501. משך הזמן שבו התשובות השליליות האלה נשמרות במטמון נקבע לפי כלל העדיפות הבא:
אם התגובה השלילית מהמקור כוללת כותרות תגובה מפורשות מסוג
Cache-ControlאוExpires, Cloud CDN שומר במטמון את התגובה השלילית למשך הזמן שצוין בכותרות האלה.לדוגמה, אם השרת המקורי מחזיר
404 Not Foundעם הגדרה שלCache-Control: public,max-age=60, קוד הסטטוס404נשמר במטמון למשך60שניות, והמערכת מתעלמת ממדיניות negative caching עבור הבקשה הספציפית הזו.אם התשובה השלילית מהמקור לא כוללת כותרות
Cache-ControlאוExpires, Cloud CDN מחיל את ערכי ה-TTL של מדיניות ה-negative caching שהוגדרו. לדוגמה, אם השרת המקורי מחזיר404 Not Foundללא כותרות של שמירת נתונים במטמון, התגובה נשמרת במטמון למשך הזמן שצוין ב-TTL שלcdnPolicy.negativeCachingPolicyעבור404 status code.
כאשר מצב המטמון מוגדר ל-FORCE_CACHE_ALL, negative caching מבטל את כל כותרות המטמון שהוגדרו על ידי המקור. Cloud CDN שומר במטמון את התגובה למשך הזמן שצוין ב-TTL, או לא שומר אותה במטמון אם לא הוגדר TTL.
בנוסף, כשמצב מטמון מוגדר ל-FORCE_CACHE_ALL, Cloud CDN משנה גם את max-age שנשלח ללקוח בכותרת Cache-Control. בפרט, אם לשגיאה מסוימת יש הגדרת TTL, Cloud CDN מתייחס לערך ה-TTL הנמוך ולהגדרה ושולח כותרת client_ttl
עם הערך הזה.Cache-Control: public,max-age=N אם לשגיאה מסוימת לא מוגדר TTL, Cloud CDN מסיר את הכותרת Cache-Control שנשלחת מהמקור. רשת Cloud CDN תמיד מסירה גם את הכותרת Expires שנשלחת על ידי המקור.
אם מקור מסוים הפעיל בתחילה negative caching אבל אחר כך השבית אותה (באופן ידני או על ידי השבתת השמירה במטמון של קוד תגובה מסוים), תגובות שגיאה שנשמרו במטמון ייחשבו כתקפות על סמך הכותרות Cache-Control או Expires בלבד. לכן, אחרי שמשביתים את negative caching, תגובה ללא הנחיות לגבי משך השמירה במטמון בכותרות שלה לא מוצגת מהמטמון.
מערכת Cloud CDN שומרת במטמון בתגובה לבקשות GET. מידע נוסף זמין במאמר בנושא תוכן שניתן לשמור במטמון.
כל רשומה במטמון מזוהה באמצעות מפתח מטמון.
השבתת negative caching
המסוף
- נכנסים לדף Load Balancing במסוף Google Cloud .
- לוחצים על השם של מאזן העומסים החיצוני של האפליקציות.
- לוחצים על Edit .
- בקטע Backend configuration, בוחרים קצה עורפי ולוחצים על Edit (עריכה) .
- מוודאים שהאפשרות Enable Cloud CDN (הפעלת Cloud CDN) מסומנת.
- בחלק התחתון של החלון, לוחצים על הגדרות מתקדמות.
- מבטלים את הסימון בתיבה שליד הפעלת שמירת מטמון שלילי.
- לוחצים על עדכון.
- לוחצים שוב על עדכון.
gcloud
למאגרי backend, משתמשים בפקודה gcloud compute backend-buckets create או gcloud compute backend-buckets update עם הדגל --no-negative-caching.
בשירותים לקצה העורפי, משתמשים בפקודה gcloud compute backend-services create או gcloud compute backend-services update עם הדגל --no-negative-caching.
gcloud compute backend-services (create | update) (BACKEND_SERVICE_NAME | BACKEND_BUCKET_NAME)
--no-negative-caching
api
כדי להשתמש בקטגוריות של שרתים עורפיים, צריך להשתמש בקריאה ל-API של Method: backendBuckets.insert או Method: backendBuckets.update.
בשירותי קצה עורפי, משתמשים ב-Method: backendServices.insert או ב-Method: backendServices.update כדי לבצע קריאה ל-API.
משתמשים באחת מהקריאות הבאות ל-API:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
מוסיפים את הקטע הבא לגוף בקשת ה-JSON:
"cdnPolicy": {
"negativeCaching": OFF
}