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

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

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

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

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

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

היוצא מן הכלל הוא בקשות שמחזירות שגיאות 404. ה-CDN שומר את תגובת ה-404 של השירות שלך לכתובת URL לא קיימת למשך 10 דקות, כך שבקשות עוקבות עבור כתובת URL זו מוגשות מתוך ה-CDN. אם תשנה את השירות שלך כך שתוכן קיים כעת בכתובת ה-URL הזו, ה-CDN ימשיך לשרת כל 404s שמור במשך 10 דקות (לכל היותר), ולאחר מכן מגיש תוכן מכתובת האתר הזו בדרך כלל.

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

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

הגדר Cache-Control

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

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

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

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

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

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

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

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

מתי מוגש תוכן שמור?

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

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

שנה כותרות

כותרת ה- Vary קובעת באילו כותרות בקשה יש להשתמש כדי לספק תגובה מתאימה (האם התוכן המאוחסן במטמון חוקי או אם יש לאמת מחדש את התוכן עם שרת המקור).

Firebase Hosting מגדיר אוטומטית כותרת 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 שונות נשמרות בנפרד. שים לב ש-hosting מוסיף Cookie and Authorization לכותרת Vary כברירת מחדל כאשר מבוצעת בקשה לתוכן דינמי. זה מבטיח שכל כותרת הפעלה או הרשאת עוגיות שבה אתה משתמש הופכת לחלק ממפתח המטמון, מה שמונע דליפות מקריות של תוכן.

שימו לב גם:

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

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

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

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

כאשר קיים, קובץ ה-cookie __session הופך אוטומטית לחלק ממפתח המטמון, כלומר בלתי אפשרי ששני משתמשים עם קובצי Cookie שונים יקבלו את התגובה המאוחסנת של האחר. השתמש בקובץ cookie __session רק אם האפליקציה שלך מציגה תוכן שונה בהתאם להרשאת המשתמש.