הצגת תוכן ישן

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

הסיבות לכך הן:

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

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

  • במקור: אפשר לציין את ההנחיה Cache-Control: stale-while-revalidate בכותרת התגובה. ‫Cloud CDN מכבד את ההנחיה הזו ומציג את התוכן המיושן למשך מספר השניות שצוין אחרי שתוקף רשומת המטמון פג. במהלך התקופה הזו, Cloud CDN שולח באופן אסינכרוני בקשה למקור כדי לבצע אימות מחדש של התוכן ולרענן אותו.

  • באמצעות המדיניות: זו הגדרת תצורה של Cloud CDN שמכתיבה משך זמן מקסימלי, אחרי שתוקף התגובה פג, שבמהלכו Cloud CDN יכול להמשיך להציג גרסה לא עדכנית. ההגדרה הזו מתבצעת באמצעות האפשרות serve-while-stale. אם ההנחיה stale-while-revalidate לא מופיעה בתשובה, נעשה שימוש בהגדרה הזו. אם לא מציינים ערך, המערכת משתמשת בערך ברירת המחדל, 86400s (יום אחד).

‫Cloud CDN לא תומך בהנחיה stale-if-error. ההוראה הזו מורה למטמון להימנע מהצגת תוכן מיושן (stale), אלא אם אימות מחדש סינכרוני עם שרת המקור נכשל עם קודי סטטוס שגיאה מסוימים.

ערכי ברירת המחדל, המינימום והמקסימום הם:

  • ברירת מחדל: 86,400 שניות (יום אחד)
  • מינימום: 0 שניות (התכונה מושבתת)
  • מקסימום: 604,800 שניות (שבוע אחד)

תוכן ישן מוצג עד למגבלה שצוינה אחרי מועד התפוגה של רשומת המטמון, שמוגדר על ידי הכותרות max-age, s-maxage או Expires. מידע נוסף זמין במאמר בנושא תוקף ואימות של בקשות.

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

רישום ביומן וסוכן משתמש

הבקשות האסינכרוניות שמוגשות על ידי Cloud CDN מופיעות בשרת המקור בדיוק כמו בקשות רגילות לאימות מחדש שמתרחשות כשלא מוגש תוכן מיושן (stale). היוצא מן הכלל הוא אם הם מתויגים בכותרת User-Agent שמכילה Cloud-CDN-Google.

בקשות אסינכרוניות נרשמות בנפרד ב-Cloud Logging, כך שבקשת משתמש שמוצג לה תוכן לא עדכני יוצרת שני רשומות ביומן: הראשונה היא לגבי התוכן שמוצג למשתמש, והשנייה היא לגבי בקשת האימות מחדש למקור. בדומה לאימותים מחדש סינכרוניים, יכול להיות שבנסיבות מסוימות Cloud CDN ישלח בקשה מותנית, או פשוט ישלח בקשה חוזרת לתוכן ללא תנאים. בכל מקרה, קוד התגובה שנרשם ב-Cloud Logging תואם לבקשה המקורית ל-Cloud CDN. לדוגמה, 200 OK לבקשה ללא תנאי, או 304 Not Modified אם התגובה המקורית של המשתמש הייתה מותנית.

הנחיית בקשה של לקוח max-stale

לקוחות יכולים לבקש זמן שירות קצר יותר של נתונים לא עדכניים על ידי ציון הנחיית max-stale cache-control. אם מציינים את ההנחיה הזו, היא קובעת את מידת הטריות שהלקוח יכול לסבול.

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

הלקוח לא יכול לבקש ערך max-stale שגדול מהערך שהוגדר באפשרות ההגדרה serve-while-stale ובפקודה stale-while-revalidate cache-control מהמקור.

לפני שמתחילים

  • מידע על מצבי מטמון ותוכן סטטי

  • מוודאים ש-Cloud CDN מופעל. הוראות מפורטות זמינות במאמר שימוש ב-Cloud CDN.

  • אם צריך, מעדכנים לגרסה האחרונה של Google Cloud CLI:

    gcloud components update
    

הצגת תוכן מיושן בזמן אימות מחדש

המסוף

  1. נכנסים לדף Load balancing במסוף Google Cloud .

    כניסה לדף Load balancing

  2. לוחצים על השם של מאזן העומסים החיצוני של האפליקציות.
  3. לוחצים על עריכה.
  4. בקטע Backend configuration, בוחרים קצה עורפי ולוחצים על Edit.
  5. מוודאים שהאפשרות Enable Cloud CDN (הפעלת Cloud CDN) מסומנת.
  6. בחלק התחתון של החלון, לוחצים על הגדרות מתקדמות.
  7. בקטע Additional CDN options (אפשרויות נוספות של CDN), בוחרים אחת מהאפשרויות הבאות עבור Serve while stale (הצגה בזמן שהנתונים לא עדכניים):
    • דקה אחת
    • ‫5 דקות
    • 10 דקות
    • 30 דקות
    • יום אחד (מומלץ)
    • 7 ימים
  8. לוחצים על עדכון.
  9. לוחצים שוב על עדכון.

gcloud

בקטגוריות של שרתים עורפיים, משתמשים בפקודה gcloud compute backend-buckets create או בפקודה gcloud compute backend-buckets update עם הדגל --serve-while-stale.

בשירותי קצה עורפי, משתמשים בפקודה gcloud compute backend-services create או בפקודה gcloud compute backend-services update עם הדגל --serve-while-stale.

gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --serve-while-stale=SECONDS
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --serve-while-stale=SECONDS

לדוגמה:

gcloud compute backend-services update my-backend-service
    --serve-while-stale=180s

API

לקטגוריות של קצה עורפי, משתמשים בקריאה ל-API ‏Method: backendBuckets.insert או Method: backendBuckets.update.

בשירותי קצה עורפי, משתמשים בקריאה ל-API ‏Method: backendServices.insert או Method: backendServices.update.

משתמשים באחת מהקריאות הבאות ל-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": {
  "serveWhileStale": SECONDS
}

השבתת הצגת תוכן מיושן

המסוף

  1. נכנסים לדף Load balancing במסוף Google Cloud .

    כניסה לדף Load balancing

  2. לוחצים על השם של מאזן העומסים החיצוני של האפליקציות.
  3. לוחצים על עריכה.
  4. בקטע Backend configuration, בוחרים קצה עורפי ולוחצים על Edit.
  5. מוודאים שהאפשרות Enable Cloud CDN לא מסומנת.
  6. בחלק התחתון של החלון, לוחצים על הגדרות מתקדמות.
  7. בקטע Additional CDN options > Serve while stale, בוחרים באפשרות Disable serve while stale.
  8. לוחצים על עדכון.
  9. לוחצים שוב על עדכון.

gcloud

בקטגוריות של קצה עורפי, משתמשים בפקודה gcloud compute backend-buckets create או בפקודה gcloud compute backend-buckets update עם הדגל --serve-while-stale שמוגדר לערך 0.

בשירותי קצה עורפי, משתמשים בפקודה gcloud compute backend-services create או בפקודה gcloud compute backend-services update עם הדגל --serve-while-stale שמוגדר לערך 0.

gcloud compute backend-services (create | update) (BACKEND_SERVICE_NAME | BACKEND_BUCKET_NAME)
    --serve-while-stale=0

API

לקטגוריות של קצה עורפי, משתמשים בקריאה ל-API ‏Method: backendBuckets.insert או Method: backendBuckets.update.

בשירותי קצה עורפי, משתמשים בקריאה ל-API ‏Method: backendServices.insert או Method: backendServices.update.

משתמשים באחת מהקריאות הבאות ל-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": {
  "serveWhileStale": 0
}