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

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

מצבי מטמון

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

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

בטבלה הבאה מוצגים מצבי הזיכרון הזמני שזמינים:

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

ההתנהגות הזו היא ברירת המחדל עבור בק-אנד עם Cloud CDN שהוגדר באמצעות Google Cloud CLI או API בארכיטקטורת REST.

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

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

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

יכול להיות שתגובות שגיאה יישמרו במטמון גם אם אין הנחיות תקפות לגבי מטמון.

לפני שמגדירים את מצב המטמון ל-FORCE_CACHE_ALL, חשוב להביא בחשבון את ההתנהגויות הבאות:

  • במקרה של כתובות URL חתומות או קובצי Cookie חתומים, הערך FORCE_CACHE_ALL מבטל את הגיל המקסימלי שצוין בהגדרה גיל מקסימלי של רשומה במטמון במסוף Google Cloud או באפשרות gcloud --signed-url-cache-max-age.

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

  • FORCE_CACHE_ALL מבטל את ההוראות למטמון (Cache-Control ו-Expires), אבל לא מבטל כותרות אחרות של תגובות מהמקור. בפרט, יכול להיות שVary כותרת תבטל את השמירה במטמון גם אם מצב המטמון הוא FORCE_CACHE_ALL. מידע נוסף זמין במאמר בנושא שינוי כותרות.

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

תוכן סטטי

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

כשמגדירים את מצב הזיכרון למטמון לערך CACHE_ALL_STATIC, ותגובה לא מכילה הנחיות מפורשות לגבי שמירה במטמון בכותרות Cache-Control או Expires, ‏ Cloud CDN שומר באופן אוטומטי את התגובה במטמון למשך:

  • נכסי אינטרנט, כולל CSS ‏ (text/css), JavaScript ‏(application/javascript) וכל הגופנים לאינטרנט, כולל WOFF2 ‏ (font/woff2)
  • תמונות, כולל JPEG ‏ (image/jpg) ו-PNG ‏ (image/png)
  • סרטונים, כולל H.264,‏ H.265 ו-MP4 (video/mp4)
  • קובצי אודיו, כולל MP3‏ (audio/mpeg) ו-MP4‏ (audio/mp4)
  • מסמכים מפורמטים, כולל PDF‏ (application/pdf)

בטבלה הבאה מופיע סיכום.

קטגוריה סוגי MIME
נכסי אינטרנט text/css text/ecmascript text/javascript application/javascript
גופנים כל Content-Type שתואם ל-font/*
תמונות כל Content-Type שתואם ל-image/*
סרטונים כל Content-Type שתואם ל-video/*
אודיו כל Content-Type שתואם ל-audio/*
סוגי מסמכים מפורמטים application/pdf וגם application/postscript

‫Cloud CDN בודק את כותרת תגובת ה-HTTP‏ Content-Type, שמשקפת את סוג ה-MIME של התוכן שמוצג.

שימו לב לנקודות הבאות:

  • תוכנת שרת האינטרנט של המקור צריכה להגדיר את Content-Type לכל תגובה. הרבה שרתי אינטרנט מגדירים את הכותרת Content-Type באופן אוטומטי, כולל NGINX,‏ Varnish ו-Apache.

  • ‫Cloud Storage מגדיר את הכותרת Content-Type באופן אוטומטי כשמשתמשים במסוף Google Cloud או ב-Google Cloud CLI כדי להעלות תוכן.

  • ‫Cloud Storage תמיד מספק כותרת Cache-Control ל-Cloud CDN. אם לא נבחר ערך באופן מפורש, נשלח ערך ברירת מחדל. כתוצאה מכך, כל התגובות המוצלחות של Cloud Storage נשמרות במטמון בהתאם לערכי ברירת המחדל של Cloud Storage, אלא אם משנים באופן מפורש את המטא-נתונים של בקרת המטמון של אובייקטים ב-Cloud Storage או משתמשים במצב FORCE_CACHE_ALL כדי לבטל את הערכים שנשלחים על ידי Cloud Storage.

  • אם רוצים לשמור במטמון סוגי תוכן של text/html ושל application/json, צריך להגדיר כותרות Cache-Control מפורשות בתגובה, ולהיזהר שלא לשמור בטעות במטמון נתונים של משתמש אחד ולהציג אותם לכל המשתמשים.

אם אפשר לשמור תגובה במטמון על סמך סוג ה-MIME שלה, אבל יש לה כותרת תגובה Cache-Control של private או no-store, או כותרת Set-Cookie, היא לא נשמרת במטמון. מידע נוסף על כללים שקובעים אם אפשר לשמור במטמון

סוגי תוכן אחרים, כמו HTML ‏ (text/html) ו-JSON ‏(application/json), לא נשמרים במטמון כברירת מחדל לתגובות מוצלחות. התשובות מהסוגים האלה הן בדרך כלל דינמיות (לכל משתמש). דוגמאות: עגלות קניות, דפי מוצרים עם התאמה אישית למשתמשים ותגובות מאומתות של API. אם מפעילים שמירה במטמון של תשובות שליליות, יכול להיות שהתשובות עדיין יישמרו במטמון עבור קודי סטטוס מסוימים.

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

שיטות להגדרת מדיניות המטמון

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

מדיניות מטמון של שירות קצה עורפי או של קטגוריית קצה עורפי

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

מדיניות בנושא מטמון במפות של כתובות URL

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

הגדרת מדיניות מטמון ברמות שונות של מפת URL, כמו הרמה הבסיסית (root), התאמות נתיבים, כללי נתיבים וכללי מסלולים, מאפשרת לכם שליטה מפורטת בשמירת סוגים שונים של תוכן שמוצגים על ידי אותו בק-אנד.

לדוגמה, אתם יכולים להגדיר כללי נתיב כדי:

  • שמירת תמונות סטטיות במטמון בנתיב /images/* למשך 24 שעות.
  • שמירת דפי HTML במטמון בנתיב /pages/* למשך 5 דקות.

אפשר להגדיר מדיניות בנושא מטמון במיפוי כתובות URL במקרים הבאים:

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

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

ערכי ברירת מחדל של שמירה במטמון

בפרמטרים של שמירת נתונים במטמון, Cloud CDN משתמש בערכי ברירת המחדל הבאים:

פרמטר ערך ברירת המחדל תיאור
מצב מטמון CACHE_ALL_STATIC מטמון אוטומטי של תגובות מוצלחות לסוגים נפוצים של תוכן סטטי.
Client TTL 3600s מגדירה max-age של שעה למטמון הדפדפן של הלקוח.
ערך ברירת המחדל של TTL 3600s מגדיר משך מטמון של שעה אחת אם המקור לא מספק כותרות.
הכללת המארח true המארח של הבקשה נכלל במפתח המטמון.
הכללת פרוטוקול true בקשות HTTP ו-HTTPS נשמרות במטמון כאובייקטים נפרדים.
הכללת מחרוזת השאילתה true מחרוזת השאילתה כולה היא חלק ממפתח המטמון.
אורך חיים מקסימלי (TTL) 86400s הזמן המקסימלי המוחלט (24 שעות) שאובייקט נשאר במטמון.
Negative Caching false תגובות שגיאה, כמו 404, לא נשמרות במטמון כברירת מחדל.
הצגת תוכן בזמן שהנתונים לא עדכניים 86400s התוכן הישן מוצג למשך 24 שעות לכל היותר אם אי אפשר להגיע למקור.

תמיכה בתכונות של בקר GKE

בטבלה הבאה מוצגת השוואה בין הזמינות של תכונות ספציפיות של Cloud CDN כשמנהלים אותן דרך בקר GKE Ingress לעומת בקר GKE Gateway.

תכונה GKE ingress דרך הגדרת הקצה העורפי שער GKE באמצעות GCPHTTPFilter
שמירה בסיסית במטמון (מצבים/ערכי TTL)
התאמה אישית של מפתח המטמון
Negative Caching
הצגת תוכן בזמן שהנתונים לא עדכניים