שינוי הגדרות TTL וביטולים

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

בטבלה הבאה מפורטות הגדרות ה-TTL.

  TTL שמוגדר כברירת מחדל אורך חיים מקסימלי (TTL) Client TTL
הסיבה להגדרה שיפור שיעורי הפגיעה במטמון לתוכן שלא משתנה לעיתים קרובות הגדרת Cloud CDN לאימות מחדש של התוכן בתדירות גבוהה יותר מהתדירות שצוינה בכותרת של מקור הגדרת אימות מחדש של התוכן על ידי הלקוחות בתדירות גבוהה יותר מול Cloud CDN
מתי משתמשים כדי שהתגובה תהיה תקינה, צריך להתקיים אחד מהתנאים הבאים:
  • מצב מטמון = FORCE_CACHE_ALL
  • מצב מטמון = CACHE_ALL_STATIC, סוג התוכן ניתן לשמירה במטמון באופן סטטי, ולא מוגדר TTL בכותרות המקור (max-age,‏ s-maxage או Expires)
כל התנאים הבאים מתקיימים:
  • מצב מטמון = CACHE_ALL_STATIC
  • ערך ה-TTL מוגדר על ידי כותרות המקור (max-age, s-maxage או Expires)
  • ערך ה-TTL שצוין בכותרת המקור גדול מערך ה-TTL המקסימלי
אחד מהתנאים הבאים מתקיים:
  • מצב המטמון הוא FORCE_CACHE_ALL, וערך ה-TTL של הלקוח קטן מערך ה-TTL של Cloud CDN
  • מצב המטמון הוא CACHE_ALL_STATIC, וערך ה-TTL של הלקוח קטן מערך ה-TTL שהוגדר בכותרת המקורית (או ערך ברירת המחדל של ה-TTL אם לא מופיע מידע בכותרת המקורית)
ערך ברירת המחדל ‫3,600 שניות (שעה) ‫86,400 שניות (יום אחד) ‫3,600 שניות (שעה)
הערך המקסימלי המותר ‫31,622,400 שניות (שנה) ‫31,622,400 שניות (שנה) ‫31,622,400 שניות (שנה)
הערות הערך חייב להיות קטן מהערך המקסימלי של TTL או שווה לו

--default-ttl=0
הערך הזה מאלץ את המערכת לאמת מחדש את התגובה במקור
הערך חייב להיות קטן מהערך המקסימלי של TTL או שווה לו

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

  • מידע נוסף על מצבי מטמון

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

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

    gcloud components update
    

הגדרת TTL כברירת מחדל

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

כשמצב המטמון הוא FORCE_CACHE_ALL, ערך ה-TTL שמוגדר כברירת מחדל מחליף את ערך ה-TTL שמוגדר בכל התשובות (כולל אלה שמוגדר להן ערך TTL בכותרות המקור). במצב הזה, ערך ברירת המחדל של TTL גלוי ללקוחות, כי Cloud CDN מגדיר את המאפיינים public ו-max-age של התגובות שמוצגות ללקוחות.

במצב CACHE_ALL_STATIC, ה-TTL שמוגדר כברירת מחדל חל על תוכן שנשמר במטמון ומוגש על ידי מקור לתגובות שלא מוגדר להן TTL תקף (כותרת max-age, s-maxage או Expires). במצב CACHE_ALL_STATIC, ערך ברירת המחדל של TTL לא משנה את הכותרת Cache-Control שמוצגת ללקוחות. כדי לשנות את הכותרת Cache-Controlבמצב CACHE_ALL_STATIC, צריך להגדיר את ה-TTL של הלקוח.

כשמגדירים את מצב המטמון לשימוש בכותרות של שרת המקור (USE_ORIGIN_HEADERS), ערך ברירת המחדל של TTL לא חל ולא ניתן להגדרה, כי Cloud CDN משתמש בהנחיית המקור max-age או s-maxage או בכותרת Expires במקום זאת.

המסוף

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

    כניסה לדף איזון עומסים

  2. לוחצים על השם של מאזן העומסים החיצוני של האפליקציות.
  3. לוחצים על Edit.
  4. בקטע Backend configuration, בוחרים קצה עורפי ולוחצים על Edit (עריכה) .
  5. מוודאים שהאפשרות Enable Cloud CDN (הפעלת Cloud CDN) מסומנת.
  6. מוודאים שמצב המטמון הוא שמירה של תוכן סטטי במטמון (מומלץ) או שמירה של כל התוכן במטמון. אי אפשר לשנות את ערכי ה-TTL כשמצב המטמון הוא Use origin settings based on Cache-Control headers.
  7. בקטע אורך חיים (TTL) שמוגדר כברירת מחדל, בוחרים ערך.
  8. לוחצים על Save.

gcloud

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

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

gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --default-ttl=DEFAULT_TTL
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --default-ttl=DEFAULT_TTL

מחליפים את DEFAULT_TTL בערך של עד 31,622,400 שניות (שנה אחת).

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": {
  "defaultTtl": DEFAULT_TTL
}

מחליפים את DEFAULT_TTL בערך של עד 31,622,400 שניות (שנה אחת).

הגדרת ה-TTL המקסימלי

הערך המקסימלי (max) של TTL מציין את ה-TTL המקסימלי המותר ב-Cloud CDN לתוכן שנשמר במטמון שמוצג על ידי מקור.

ה-TTL של תגובה מוגבל על ידי ה-TTL המקסימלי אם מתקיים אחד מהתנאים הבאים:

  • התגובה מנסה להגדיר max-age או s-maxage גבוה יותר מהערך המקסימלי של TTL.
  • התשובה מכילה כותרת Expires עם תאריך עתידי שרחוק יותר מ-cdnPolicy.maxTtl שניות.

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

ההגדרה הזו נמצאת בשימוש רק כשמצב המטמון הוא CACHE_ALL_STATIC. הערך המקסימלי המותר הוא 31,622,400 שניות (שנה אחת). הערה: יכול להיות שאובייקטים שלא ניגשים אליהם לעיתים קרובות יוסרו מהמטמון לפני תפוגת ה-TTL שהוגדר.

ב-FORCE_CACHE_ALL, ה-TTL תמיד מוגדר לברירת המחדל של ה-TTL, ואי אפשר להגדיר TTL מקסימלי.

המסוף

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

    כניסה לדף איזון עומסים

  2. לוחצים על השם של מאזן העומסים החיצוני של האפליקציות.
  3. לוחצים על Edit.
  4. בקטע Backend configuration, בוחרים קצה עורפי ולוחצים על Edit (עריכה) .
  5. מוודאים שהאפשרות Enable Cloud CDN (הפעלת Cloud CDN) מסומנת.
  6. מוודאים שמצב המטמון הוא שמירה של תוכן סטטי במטמון (מומלץ).
  7. בקטע אורך חיים מקסימלי, בוחרים ערך.
  8. לוחצים על Save.

gcloud

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

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

gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --max-ttl=MAX_TTL
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --max-ttl=MAX_TTL

מחליפים את MAX_TTL בערך של עד 31,622,400 שניות (שנה אחת).

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": {
  "maxTtl": MAX_TTL
}

מחליפים את MAX_TTL בערך של עד 31,622,400 שניות (שנה אחת).

שינוי ברירת המחדל של ה-TTL של הלקוח

בכל מצבי המטמון, ‏ Cloud CDN מעביר כותרות Cache-Control ללקוח.

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

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

אם הכותרת Expires מופיעה בתגובה של המקור, היא מוסרת ומוחלפת בהנחיה Cache-Control: max-age עם ה-TTL המתאים. בתגובות שגיאה, אם לא מוגדר negative caching TTL, הכותרת Cache-Control מוסרת גם היא.

ערך ה-TTL של הלקוח נחשב לערך המקסימלי שיישלח לדפדפנים או ללקוחות, ולכן אי אפשר להשתמש בו כדי להגדיל את הערך max-age שיישלח אחרת. אם הערך של max-age שנשלח לדפדפנים וללקוחות נמוך מהערך הרצוי, צריך להגדיל את הערך של ההנחיה max-age בתגובה שמוחזרת מהמקור, או לשנות את ההגדרות של ברירת המחדל של TTL או של negative caching בהתאם.

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

המסוף

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

    כניסה לדף איזון עומסים

  2. לוחצים על השם של מאזן העומסים החיצוני של האפליקציות.
  3. לוחצים על Edit.
  4. בקטע Backend configuration, בוחרים קצה עורפי ולוחצים על Edit (עריכה) .
  5. מוודאים שהאפשרות Enable Cloud CDN (הפעלת Cloud CDN) מסומנת.
  6. מוודאים שמצב המטמון הוא שמירה של תוכן סטטי במטמון (מומלץ) או שמירה של כל התוכן במטמון. אי אפשר לשנות את ערכי ה-TTL כשמצב המטמון הוא Use origin settings based on Cache-Control headers.
  7. בקטע אורך חיים (TTL) של הלקוח, בוחרים ערך של עד שנה.
  8. לוחצים על Save.

gcloud

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

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

gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --client-ttl=CLIENT_TTL
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --client-ttl=CLIENT_TTL

מחליפים את CLIENT_TTL בערך של עד 31,622,400 שניות (שנה אחת).

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": {
  "clientTtl": CLIENT_TTL
}

מחליפים את CLIENT_TTL בערך של עד 31,622,400 שניות (שנה אחת).

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

  • כדי להבין למה מוצג תוכן מיושן או שפג תוקפו, אפשר לעיין במאמר בנושא הצגת תוכן מיושן.