
Cloudflare מוסיפה תמיכה ב-Vary ל-Cache Rules בכל התוכניות
Cloudflare הוסיפה תמיכה בכותרת התגובה Vary של HTTP ל-Cache Rules, בכל התוכניות כולל החינמית. שרת המקור עדיין מצהיר אילו שדות בקשה עשויים לשנות את התגובה, אך מעתה המפעיל מחליט לכל כותרת: לנרמל את הערך, להעביר אותו כפי שהוא או לדלג על המטמון.
Cloudflare הוסיפה תמיכה בכותרת התגובה Vary של HTTP ל-Cache Rules. התכונה זמינה בכל התוכניות, כולל החינמית. בפוסט בבלוג מכנים את Vary "החלק המכוער ביותר של HTTP שטרם שיפרו" — ציטוט של מארק נוטינגהאם.
הכותרת קיימת משום שכתובת אחת יכולה להחזיר יותר מתגובה נכונה אחת: השרת שולח ללקוחות שונים שפות, פורמטי תמונה או שיטות דחיסה שונות. מטמון שמתעלם מ-Vary עלול להחזיר ללקוח API קוד HTML ולדפדפן — JSON, ומטמון שמתייחס לכל ערך גולמי כנפרד מפזר תגובה אחת שמישה לאלפי וריאציות כמעט זהות.

מה Vary אינה אומרת
Vary מודיעה למטמון אילו שדות בבקשה עשויים להשפיע על התגובה, אך אינה אומרת מה התגובה מייצגת. בדוגמה של Cloudflare המקור משרת אנגלית, צרפתית וגרמנית, ושני לקוחות שולחים Accept-Language: en-US, fr;q=0.8 ו-Accept-Language: fr;q=0.8, en-GB. שניהם מעדיפים אנגלית ועשויים לקבל את אותם בתים, אבל מטמון שמשווה ערכים גולמיים נאלץ לשמור אותם כווריאציות נפרדות.
הבעיה מחמירה עם מספר השדות: עשרה ערכים בשדה אחד הם עשר וריאציות, ואילו עשרה ערכים בשלושה שדות יכולים להיות אלף צירופים. ניתוח של יותר מ-120 מיליון תגובות מכמעט 50,000 אתרים פופולריים מצא שקרוב ל-3,000 אתרים השתנו לפי ארבעה שדות או יותר — חלקם לפי 10, 23 ואפילו 47.
שלוש פעולות: normalize, passthrough, bypass
במודל החדש המקור ממשיך לציין את הכותרות ב-Vary, בעוד Cache Rule קובעת כיצד Cloudflare מטפלת בכל אחת. normalize — ברירת המחדל המומלצת — משכתב ערכים של Accept, Accept-Language ו-Accept-Encoding לפני ההשוואה למטמון: ממיר לאותיות קטנות וממיין לפי ערך האיכות, כך שבקשות שקולות חולקות תגובה אחת. passthrough שומר בתים גולמיים, כולל רישיות, רווחים, סדר וערכים כפולים, ומתאים לכותרת שבה הערך המדויק משנה את התגובה. bypass אינו שומר את התגובה כאשר המקור מציין את הכותרת ב-Vary — האפשרות לעוגיות, User-Agent ושדות מותאמים אישית אחרים. תגובה עם Vary: * לעולם אינה נשמרת.
הגדרה ומגבלות
הגדרות Vary נמצאות ב-Cache Rules (בדשבורד: Caching > Cache Rules) וזמינות גם דרך Rulesets API בשלב http_request_cache_settings ודרך Terraform. Cloudflare מדגישה שהאחריות נשארת על המקור: כל תגובה הניתנת לזכירה שעשויה להשתנות לפי שדות בקשה חייבת להחזיר את כותרת Vary המתאימה באופן עקבי, כולל בשגיאות. שינוי כלל אינו מנקה אוטומטית ערכים קיימים — וריאציות ישנות נשארות עד לפקיעתן או לניקוין, וניקוי משאב מכסה את כל וריאציות ה-Vary שלו.
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.