נהל התנהגות מטמון

אירוח Firebase משתמש ב- CDN עולמי רב עוצמה כדי להפוך את האתר שלך למהיר ככל האפשר.

כל תוכן סטטי המבוקש במטמון באופן אוטומטי על CDN. אם אתה פורס מחדש את תוכן האתר שלך, Firebase Hosting באופן אוטומטי מנקה את כל התוכן הסטטי שלך במטמון ברחבי ה- CDN עד לבקשה הבאה.

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

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

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

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

הגדר Cache-Control

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

res.set('Cache-Control', 'public, max-age=300, s-maxage=600');

בכותרת הדוגמה הזו, ההוראות עושות שלושה דברים:

  • public - Marks המטמון כמו public . אמצעי זה ששני הדפדפן לבין שרת ביניים (כלומר CDN עבור Firebase אירוח) יכולים לאפסן את התוכן.

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

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

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

אתה יכול ללמוד עוד על Cache-Control בכותרת על המפתחים של מוזילה הרשת וב של גוגל תיעוד מפתח אינטרנט .

מתי מוגש תוכן במטמון?

הדפדפן ו- CDN שומרים את התוכן שלך על סמך:

  • שם המארח
  • הנתיב
  • מחרוזת השאילתה
  • התוכן של כותרות הבקשות מפורטות Vary כותרת

כותרות שונות

Vary הכותרת קובעת אילו לבקש כותרות יש להשתמש כדי לתת מענה הולם (בין אם התוכן במטמון הוא תקף או אם התוכן צריך להיות מאומתים מחדש עם שרת המקור).

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

res.set('Vary', 'Accept-Encoding, X-My-Custom-Header');

במקרה זה, הערך של Vary הכותרת היא:

vary: X-My-Custom-Header, x-fh-requested-host, accept-encoding, cookie, authorization

עם ההגדרות האלה, שתי בקשות זהות אחרת עם שונות X-My-Custom-Header כותרות מאוחסנות במטמון בנפרד. שים לב כי אירוח מוסיף Cookie ו Authorization אל Vary הכותרת כברירת מחדל כאשר הבקשה מוגשת עבור תוכן דינמי. זה מבטיח שכל כותרת אישור או כותרת אישור של עוגיות בה אתה משתמש תהפוך לחלק ממפתח המטמון, מה שמונע דליפות תוכן בשוגג.

שימו לב גם:

  • רק GET ו HEAD בקשות ניתן במטמון. בקשות HTTPS בשיטות אחרות לעולם אינן נשמרות במטמון.

  • היזהר בעת הוספת הגדרות אל Vary בכותרת. ככל שתוסיף הגדרות רבות יותר, כך הסיכוי שה- CDN יכול להגיש תוכן במטמון. זכור גם כי Vary מתבסס על כותרות בקשות, לא כותרות תגובה.

שימוש בעוגיות

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

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