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

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

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

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

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

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

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

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

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

הגדרת סמל המטמון

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

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

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

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

  • 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 בקישור רשת המפתחים של Mozilla ובמודל מסמכי תיעוד למפתחי אתרים.

מתי מוצג תוכן שנשמר במטמון?

הדפדפן וה-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 ו-Authorization לכותרת Vary כברירת מחדל כשבקשה שמיועד לתוכן דינמי. כך כל כותרת של הרשאת סשן או קובץ cookie שבה אתם משתמשים תהפוך לחלק ממפתח המטמון, וכך תוכלו למנוע דליפות תוכן מקריות.

בנוסף:

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

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

שימוש בקובצי Cookie

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

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