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
רק אם
האפליקציה מציגה תוכן שונה בהתאם להרשאה של המשתמש.