מדריך קלאודפלייר בעברית

תיעוד 102

מפתחות מטמון

מפתח מטמון (Cache Key) הוא מזהה ש-Cloudflare משתמשת בו לקובץ במטמון שלנו, ותבנית מפתח המטמון (Cache Key Template) מגדירה את המזהה לבקשת HTTP נתונה.

מפתח מטמון ברירת מחדל כולל:

  1. כתובת URL מלאה:
    • scheme: יכול להיות HTTP או HTTPS.
    • host: לדוגמה, www.cloudflare.com
    • URI עם מחרוזת שאילתה: לדוגמה, /logo.jpg?utm_source=newsletter
  2. כותרת Origin שהלקוח שולח (לתמיכה ב-CORS).
  3. הכותרות x-http-method-override, x-http-method ו-x-method-override.
  4. הכותרות x-forwarded-host, x-host, x-forwarded-scheme (אלא אם כן http או https), x-original-url, x-rewrite-url ו-forwarded.

#יצירת מפתחות מטמון מותאמים

מפתחות מטמון מותאמים מאפשרים להגדיר במדויק את הגדרת היכולת להיכנס למטמון עבור כל משאב. הם נותנים יותר שליטה, אם כי הם עלולים להפחית את שיעור פגיעות המטמון ולהוביל לפיצול מטמון (cache sharding):

  1. בלוח הבקרה של Cloudflare, עברו לדף Cache Rules. מעבר אל Cache Rules
  2. בחרו Create rule.
  3. תחת When incoming requests match, הגדירו את ביטוי הכלל.
  4. תחת Then, במקטע Cache eligibility, בחרו Eligible for cache.
  5. הוסיפו את ההגדרה Cache Key לכלל ובחרו את הגדרת Query String המתאימה.
  6. אפשר גם לבחור הגדרות עבור Headers, Cookie, Host ו-User.
  7. כדי לשמור ולפרוס את הכלל, בחרו 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 ערכים ספציפיים:

  • accept
  • accept-charset
  • accept-encoding
  • accept-datetime
  • accept-language
  • referer
  • user-agent

זהירות

עבור כותרות מותאמות ומוגבלות, ערכים נבחרים משתמשים בהתאמת תת מחרוזת תלוית רישיות. לדוגמה, text/plain תואם לערך כותרת Accept של text/plain, foo/bar. הוא יכול גם להתאים לערך הלא מכוון text/plaintext, אבל לא ל-Text/Plain.

כדי לבדוק נוכחות של כותרת בלי לכלול את הערך בפועל, השתמשו באפשרות Check presence of.

כיום אפשר להחריג רק את כותרת Origin. כותרת Origin תמיד כלולה אלא אם הוחרגה במפורש. הכללת כותרת Origin במפתח המטמון חשובה כדי לאכוף CORS.

בנוסף, אי אפשר לכלול את הכותרות הבאות:

  • כותרות שמממשות מחדש תכונות מטמון או פרוקסי
    • connection
    • content-length
    • cache-control
    • if-match
    • if-modified-since
    • if-none-match
    • if-unmodified-since
    • range
    • upgrade
  • כותרות שמכוסות על ידי תכונות אחרות של מפתח מטמון
    • cookie
    • host
  • כותרות ייחודיות ל-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.

כמו query_string או header, cookie שולט באילו עוגיות מופיעות במפתח המטמון. אפשר לכלול את ערך העוגייה או לבדוק נוכחות של עוגייה מסוימת.

#הערות שימוש

אי אפשר לכלול עוגיות ייחודיות ל-Cloudflare. עוגיות של Cloudflare מתחילות בקידומת __cf, לדוגמה __cflb

#תכונות משתמש

שדות תכונות משתמש מוסיפים למפתח המטמון תכונות על משתמש הקצה (הלקוח).

  • device_type מסווג בקשה כ-mobile, desktop או tablet לפי ה-User Agent
  • geo כולל את מדינת הלקוח, שנגזרת מכתובת ה-IP
  • lang כולל את קוד השפה הראשון שנמצא בכותרת Accept-Language שהלקוח שולח

הערה

ההגדרה Cache by device type של APO והאפשרות Cache by device type ב-Cache Rules משתמשות באותו מנגנון כדי להוסיף סוג מכשיר למפתח המטמון. Cache Rules מאפשר להגדיר זאת ידנית בלי APO. עיינו ב-cache by device type in APO לפרטים.

#זמינות

זמינות אפשרויות מפתחות המטמון משתנה לפי התוכנית.

FreeProBusinessEnterprise
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 תמיד משתמש במפתח המטמון של ברירת המחדל. התוצאה היא אי התאמה בין המפתחות.