תיעוד 102
מפתחות מטמון
מפתח מטמון (Cache Key) הוא מזהה ש-Cloudflare משתמשת בו לקובץ במטמון שלנו, ותבנית מפתח המטמון (Cache Key Template) מגדירה את המזהה לבקשת HTTP נתונה.
מפתח מטמון ברירת מחדל כולל:
- כתובת URL מלאה:
- scheme: יכול להיות HTTP או HTTPS.
- host: לדוגמה,
www.cloudflare.com - URI עם מחרוזת שאילתה: לדוגמה,
/logo.jpg?utm_source=newsletter
- כותרת Origin שהלקוח שולח (לתמיכה ב-CORS).
- הכותרות
x-http-method-override,x-http-methodו-x-method-override. - הכותרות
x-forwarded-host,x-host,x-forwarded-scheme(אלא אם כן http או https),x-original-url,x-rewrite-urlו-forwarded.
#יצירת מפתחות מטמון מותאמים
מפתחות מטמון מותאמים מאפשרים להגדיר במדויק את הגדרת היכולת להיכנס למטמון עבור כל משאב. הם נותנים יותר שליטה, אם כי הם עלולים להפחית את שיעור פגיעות המטמון ולהוביל לפיצול מטמון (cache sharding):
- בלוח הבקרה של Cloudflare, עברו לדף Cache Rules. מעבר אל Cache Rules
- בחרו Create rule.
- תחת When incoming requests match, הגדירו את ביטוי הכלל.
- תחת Then, במקטע Cache eligibility, בחרו Eligible for cache.
- הוסיפו את ההגדרה Cache Key לכלל ובחרו את הגדרת Query String המתאימה.
- אפשר גם לבחור הגדרות עבור Headers, Cookie, Host ו-User.
- כדי לשמור ולפרוס את הכלל, בחרו Deploy. אם אינכם מוכנים לפרוס את הכלל, בחרו Save as Draft.
הערה
כאשר נרמול כתובות URL מופעל, מומלץ להפעיל גם Normalize URLs to origin, במיוחד אם מגדירים מפתחות מטמון מותאמים או משתמשים ב-cache by device type, שגם משנה את מפתח המטמון. זה עוזר לוודא שכתובת ה-URL במפתח המטמון תואמת לכתובת ה-URL שנשלחת ל-origin, מונע הרעלת מטמון ומבטיח התנהגות עקבית.
#תבנית מפתח מטמון
יש כמה סיבות נפוצות לשנות את תבנית מפתח המטמון. אפשר לשנות את תבנית מפתח המטמון כדי:
- לפצל את המטמון כך שכתובת URL אחת תישמר בכמה קבצים. לדוגמה, כדי לאחסן קבצים שונים לפי מחרוזת שאילתה מסוימת בכתובת ה-URL.
- לאחד את המטמון כך שבקשות HTTP שונות יישמרו באותו קובץ. לדוגמה, כדי להסיר את כותרת Origin שנוספת כברירת מחדל למפתחות המטמון של Cloudflare.
#השפעת הגדרות SSL על התנהגות המטמון
המשתנה $scheme של Cloudflare ממלא תפקיד מרכזי בהתנהגות המטמון, אבל המשמעות שלו משתנה לפי סוג מפתח המטמון:
- מפתח מטמון ברירת מחדל:
$schemeמתייחס ל-סכמת ה-origin, הפרוטוקול ש-Cloudflare משתמשת בו כדי להתחבר לשרת ה-origin (HTTP או HTTPS). בתצורה זו, שינויים בהגדרות ה-SSL (לדוגמה, מעבר מ-Flexible ל-Full) משנים את סכמת ה-origin. מכיוון שמפתח המטמון כולל את סכמת ה-origin, שינויים כאלה גורמים ל-cache bust, ו-Cloudflare נדרשת לשלוף את התוכן שוב מה-origin. - מפתח מטמון מותאם:
$schemeמתייחס ל-סכמת המבקר, הפרוטוקול שהלקוח ששולח את הבקשה ל-Cloudflare משתמש בו. במקרה זה, שינויים בהגדרת SSL אינם משפיעים על מפתח המטמון אלא אם סכמת ה-origin כלולה במפורש בתצורה המותאמת.
לדוגמה, עם Flexible SSL, Cloudflare תמיד מתחברת ל-origin דרך HTTP, בלי קשר לכך שהמבקר משתמש ב-HTTP או ב-HTTPS. התוצאה היא אותו מפתח מטמון לשני הפרוטוקולים תחת תצורת ברירת המחדל.
שימו לב ששינויים בהגדרת SSL יכולים להוביל לביטול תוקף המטמון בעת שימוש במפתח המטמון של ברירת המחדל:
- מעבר מ-Off ל-Full, Full (strict) או Strict מעדכן את סכמת ה-origin מ-HTTP ל-HTTPS, והתוצאה היא cache bust.
- מעבר מ-Flexible ל-Full, Full (strict) או Strict משנה באופן דומה את סכמת ה-origin ל-HTTPS וגורם ל-cache bust.
הבנת האופן שבו $scheme פועל עם תצורת המטמון חיונית בעת שינוי מצבי SSL, כדי להימנע מהתנהגות מטמון לא צפויה.
#רמת מטמון: Ignore Query String
רמת מטמון של Ignore Query String יוצרת מפתח מטמון שכולל את כל הרכיבים במפתח המטמון של ברירת המחדל, למעט מחרוזת השאילתה ב-URI, שכבר אינה כלולה. לדוגמה, בקשה אל http://example.com/file.jpg?something=123 ובקשה אל http://example.com/file.jpg?something=789 יקבלו את אותו מפתח מטמון, במקרה זה.
#הגדרות מפתח מטמון
השדות הבאים שולטים בתבנית מפתח המטמון.
#Query String
מחרוזת השאילתה שולטת באילו פרמטרים של מחרוזת השאילתה בכתובת ה-URL נכנסים למפתח המטמון. אפשר include פרמטרים מסוימים של מחרוזת השאילתה או exclude אותם באמצעות השדות המתאימים. כשכוללים פרמטר של מחרוזת שאילתה, ה-value של פרמטר מחרוזת השאילתה משמש במפתח המטמון.
#דוגמה
אם כוללים את מחרוזת השאילתה foo בכתובת URL כמו https://www.example.com/?foo=bar, אז bar מופיע במפתח המטמון. צפוי בדיוק אחד מבין include או exclude.
#הערות שימוש
- כדי לכלול את כל פרמטרי מחרוזת השאילתה (התנהגות ברירת המחדל), השתמשו ב-include:
"\*" - כדי להתעלם ממחרוזות שאילתה, השתמשו ב-exclude:
"\*" - כדי לכלול את רוב פרמטרי מחרוזת השאילתה אבל להחריג כמה, השתמשו בשדה exclude, שמניח ששאר פרמטרי מחרוזת השאילתה כלולים.
#Headers
כותרות שולטות באילו כותרות נכנסות למפתח המטמון. בדומה ל-Query String, אפשר לכלול כותרות מסוימות או להחריג כותרות ברירת מחדל.
כשכוללים כותרת, ערך הכותרת נכלל במפתח המטמון. לדוגמה, אם בקשת HTTP מכילה כותרת HTTP כמו X-Auth-API-key: 12345, וכוללים את X-Auth-API-Key header בתבנית מפתח המטמון, אז 12345 מופיע במפתח המטמון.
במקטע Include headers and selected values אפשר להוסיף שמות כותרות ואת הערכים שלהן למפתח המטמון. עבור כותרות מותאמות, ערכים הם אופציונליים, אבל עבור הכותרות המוגבלות הבאות חובה לכלול בין ערך אחד ל-10 ערכים ספציפיים:
acceptaccept-charsetaccept-encodingaccept-datetimeaccept-languagerefereruser-agent
זהירות
עבור כותרות מותאמות ומוגבלות, ערכים נבחרים משתמשים בהתאמת תת מחרוזת תלוית רישיות. לדוגמה, text/plain תואם לערך כותרת Accept של text/plain, foo/bar. הוא יכול גם להתאים לערך הלא מכוון text/plaintext, אבל לא ל-Text/Plain.
כדי לבדוק נוכחות של כותרת בלי לכלול את הערך בפועל, השתמשו באפשרות Check presence of.
כיום אפשר להחריג רק את כותרת Origin. כותרת Origin תמיד כלולה אלא אם הוחרגה במפורש. הכללת כותרת Origin במפתח המטמון חשובה כדי לאכוף CORS.
בנוסף, אי אפשר לכלול את הכותרות הבאות:
- כותרות שמממשות מחדש תכונות מטמון או פרוקסי
connectioncontent-lengthcache-controlif-matchif-modified-sinceif-none-matchif-unmodified-sincerangeupgrade
- כותרות שמכוסות על ידי תכונות אחרות של מפתח מטמון
cookiehost
- כותרות ייחודיות ל-Cloudflare ומתחילות בקידומת
cf-, לדוגמהcf-ray - כותרות שכבר כלולות בתבנית מפתח המטמון המותאמת, לדוגמה
origin
#Host
Host קובע איזו כותרת host לכלול במפתח המטמון.
- אם
Use original host(resolved: falseב-API), Cloudflare כוללת את כותרתHostבבקשת ה-HTTP שנשלחת ל-origin. - אם
Resolved host(resolved: trueב-API), Cloudflare כוללת את כותרתHostשנפתרה כדי לקבל אתorigin IPשל הבקשה. כותרתHostעשויה להיות שונה מהכותרת שנשלחה בפועל אם היא שונתה באמצעות Origin Rule.
#Cookie
כמו query_string או header, cookie שולט באילו עוגיות מופיעות במפתח המטמון. אפשר לכלול את ערך העוגייה או לבדוק נוכחות של עוגייה מסוימת.
#הערות שימוש
אי אפשר לכלול עוגיות ייחודיות ל-Cloudflare. עוגיות של Cloudflare מתחילות בקידומת __cf, לדוגמה __cflb
#תכונות משתמש
שדות תכונות משתמש מוסיפים למפתח המטמון תכונות על משתמש הקצה (הלקוח).
device_typeמסווג בקשה כ-mobile,desktopאוtabletלפי ה-User Agentgeoכולל את מדינת הלקוח, שנגזרת מכתובת ה-IPlangכולל את קוד השפה הראשון שנמצא בכותרתAccept-Languageשהלקוח שולח
הערה
ההגדרה Cache by device type של APO והאפשרות Cache by device type ב-Cache Rules משתמשות באותו מנגנון כדי להוסיף סוג מכשיר למפתח המטמון. Cache Rules מאפשר להגדיר זאת ידנית בלי APO. עיינו ב-cache by device type in APO לפרטים.
#זמינות
זמינות אפשרויות מפתחות המטמון משתנה לפי התוכנית.
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
| Cache deception armor | כן | כן | כן | כן |
| Cache by device type | כן | כן | כן | כן |
| Ignore query string | כן | כן | כן | כן |
| Sort query string | כן | כן | כן | כן |
| Query string | לא | לא | לא | כן |
| Headers | לא | לא | לא | כן |
| Cookie | לא | לא | לא | כן |
| Host | לא | לא | לא | כן |
| User features | לא | לא | לא | כן |
#פתרון בעיות
אפשר להשתמש ב-Rules simulator כדי לגלות אילו הגדרות מפתח מטמון הוחלו על הבקשה. כששולחים בקשה דרך Rules simulator, אם הבקשה הוגשה מהמטמון, יוצג cache hit במקטע Cache Parameters. לאחר מכן בחרו View parameter detail כדי לראות בדיוק אילו מאפייני מפתח מטמון שימשו.
#מגבלות
תכונת Prefetch אינה תואמת ל-Custom Cache Keys. עם Cache Rules, מפתח המטמון המותאם משמש לאחסון כל הנכסים במטמון. עם זאת, Prefetch תמיד משתמש במפתח המטמון של ברירת המחדל. התוצאה היא אי התאמה בין המפתחות.