תגובה שניתנת לשמירה במטמון היא תגובת 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, חשוב להביא בחשבון את ההתנהגויות הבאות:
במקרה של כתובות 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 | ||
| הצגת תוכן בזמן שהנתונים לא עדכניים |