Edge Caching לאתרים בעלי ביצועים גבוהים: Cloudflare & Varnish
לקוח, חנות מסחר אלקטרוני מבוססת WooCommerce, נתקל בצוואר בקבוק ביצועים טיפוסי: TTFB היה 800 אלפיות השנייה, LCP ב-4.2 שניות, מה שגרם לירידה בהמרות. שורש הבעיה היה היעדר מטמון — כל בקשה פגעה בשרת המקור האירופי, בעוד שהקהל היה גלובלי. לאחר יישום מטמון ברמת הקצה עם Cloudflare ו-Varnish, TTFB צנח ל-30 אלפיות השנייה (הפחתה של פי 26), LCP ירד ל-1.2 שניות, וההמרות עלו ב-15%. עומס שרת המקור ירד ב-80%, מה שהפחית את עלויות האירוח ב-$100–$300 לחודש. החיסכון החודשי הממוצע בעלויות מתעבורת המקור הוא $300–$800. חיסכון אופייני ברוחב פס של CDN נע בין $500 ל-$2000 לחודש עבור אתרים עם 100k+ ביקורים. התמחור לפתרון המפתחות שלנו מתחיל ב-$500 עבור הגדרה בסיסית של Cloudflare בלבד ועד $2000 עבור אינטגרציה מלאה של Varnish.
מטמון ברמת הקצה מנצל נקודות נוכחות (PoPs) המפוזרות גיאוגרפית כדי למזער קפיצות רשת ולהפחית את זמן ההקפה (RTT) למשתמש. במקום לשאול את שרת המקור, המבקר מקבל נתונים מצומת הקצה הקרוב ביותר תוך 10–30 אלפיות השנייה. זה קריטי עבור אתרים עם קהל גלובלי מכיוון שזה משפיע ישירות על הביצועים הנתפסים על ידי המשתמש ועל דירוג מנועי החיפוש. Core Web Vitals (LCP, TTFB) משפיעים ישירות על דירוג החיפוש. אנו מהנדסים עם 10+ שנות ניסיון מגדירים מטמון מפתחות — מכללי Cache Rules פשוטים ועד VCL מורכב של Varnish. השלמנו 50+ פרויקטים במסחר אלקטרוני ו-SaaS, כל אחד השיג עד 80% חיסכון בעלויות תעבורה. Cloudflare מספקת אספקת נכסים סטטיים מהירה פי 3 בערך בהשוואה למטמון ברמת השרת בלבד, בעוד Varnish מספקת פגיעות מטמון מהירות עד פי 5 מהגדרות Nginx ברירת מחדל. הצוות המוסמך שלנו מבטיח שיפורים ב-Cache Hit Rate, אשר בדרך כלל עולה על 99% עבור נכסים סטטיים.
מדוע מטמון בקצה חשוב למהירות האתר?
משתמשים עם חביון גבוה לשרת המקור חווים TTFB מעל 500 אלפיות השנייה, מה שמחמיר את LCP. ללא CDN, נכסים סטטיים נטענים מהשרת בכל בקשה, וסותמים את רוחב הפס. חנות WooCommerce טיפוסית ללא מטמון מספקת HTML ב-400 אלפיות השנייה; עם מטמון קצה, זה 50 אלפיות השנייה. ההבדל בולט.
המתודולוגיה שלנו כוללת ניתוח כותרות HTTP נוכחיות, זיהוי צווארי בקבוק (Cache-Control חסר, s-maxage שגוי), ויישום שילוב של פתרונות: Cloudflare Cache Rules, Varnish VCL, והגדרת כותרות Nginx. מטמון ברמת הקצה מפחית TTFB פי 10–20 בהשוואה לבקשות ישירות לשרת המקור, ו-LCP פי 2–4. לפי תיעוד Cloudflare Cache Rules, הגדרה נכונה יכולה לדחוף את Cache Hit Rate ל-99.9%.
איזה כלי לבחור: Cloudflare, Varnish, או Nginx?
ההחלטה תלויה בארכיטקטורה ובדרישות. השוו בין שלושה פתרונות מטמון פופולריים:
| כלי | רמה | גמישות | TTL ברירת מחדל | מורכבות | הכי מתאים ל |
|---|---|---|---|---|---|
| Cloudflare Cache Rules | קצה | גבוהה (כללים לפי URL, סוג מכשיר) | 30 ימים (סטטי) | נמוכה (דרך API) | קהל גלובלי, נכסים סטטיים |
| Varnish Cache | שרת מקור | בינונית (VCL) | 5 דקות (HTML) | בינונית | שרתים מבוקרים, אתרים דינמיים |
| Nginx Cache-Control | שרת מקור | נמוכה (כותרות) | כפי שהוגדר | נמוכה | אתרים פשוטים, APIs |
Cloudflare Cache Rules בשילוב עם כותרות נכונות מספקים מהירות אספקה פי 2–3 טובה יותר מאשר מטמון ברמת היישום. עבור מגן מקור וריבוד מטמון, Varnish עולה על Nginx פי 5 בביצועי פגיעות מטמון.
הגדרה שלב אחר שלב של מטמון קצה
- ביקורת: בדיקת כותרות באמצעות curl ו-Chrome DevTools; זיהוי צווארי בקבוק (2–4 שעות).
- עיצוב: קביעת URLs למטמון, TTL, אסטרטגיית פסילה (1–2 ימים).
- הגדרת CDN: הגדרת Cloudflare Cache Rules או Varnish VCL; הגדרת כותרות Nginx (1–2 ימים).
- בדיקות: בדיקת Cache Hit Rate, TTFB, LCP באמצעות PageSpeed Insights; ניטור X-Cache-Status (יום אחד).
- תיעוד: תיעוד הגדרות, הדרכת צוות, העברת גישה (0.5 יום).
סה"כ: הגדרה בסיסית אורכת 1–2 ימים; אינטגרציות מורכבות (Next.js Incremental Static Regeneration + Varnish) אורכות עד 3 ימים.
דוגמאות הגדרות
Cloudflare: Cache Rules דרך API
curl -X POST "https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
--data '{
"name": "Cache Rules",
"kind": "zone",
"phase": "http_request_cache_settings",
"rules": [
{
"expression": "(http.request.uri.path matches "^/api/")",
"action": "set_cache_settings",
"action_parameters": {
"cache": true,
"edge_ttl": {
"mode": "override_origin",
"default": 60
},
"browser_ttl": {
"mode": "override_origin",
"default": 0
}
},
"description": "Cache API responses 60s"
},
{
"expression": "(http.request.uri.path matches "\.(js|css|woff2|png|webp|avif)$")",
"action": "set_cache_settings",
"action_parameters": {
"cache": true,
"edge_ttl": {
"mode": "override_origin",
"default": 2592000
},
"browser_ttl": {
"mode": "override_origin",
"default": 31536000
}
},
"description": "Static assets: 30 days edge, 1 year browser"
}
]
}' כותרות HTTP Cache-Control על Nginx
location ~* \.(js|css|woff2|ico)$ {
add_header Cache-Control "public, max-age=31536000, immutable";
add_header Vary "Accept-Encoding";
gzip_static on;
}
location ~* \.(jpg|jpeg|png|webp|avif|svg|gif)$ {
add_header Cache-Control "public, max-age=2592000";
add_header Vary "Accept";
}
location / {
add_header Cache-Control "public, max-age=0, s-maxage=300, must-revalidate";
}
location /api/products {
add_header Cache-Control "public, max-age=60, s-maxage=60";
add_header Vary "Accept-Language, Accept-Encoding";
}
location /api/user {
add_header Cache-Control "private, no-cache, no-store";
} Next.js: ניהול מטמון עם ISR
async function getProducts() {
const res = await fetch('https://api.mysite.com/products', {
next: {
revalidate: 300,
tags: ['products'],
},
});
return res.json();
}
export async function POST(request: Request) {
const { secret, tag } = await request.json();
if (secret !== process.env.REVALIDATION_SECRET) {
return Response.json({ error: 'Unauthorized' }, { status: 401 });
}
revalidateTag(tag);
return Response.json({ revalidated: true });
} Varnish Cache: מטמון בצד השרת לפני המקור
vcl 4.0;
backend default {
.host = "127.0.0.1";
.port = "3000";
}
sub vcl_recv {
if (req.http.Authorization || req.http.Cookie ~ "session=") {
return (pass);
}
set req.url = regsuball(req.url, "[?&](utm_source|utm_medium|utm_campaign|fbclid)=[^&]*", "");
if (req.url ~ "\.(css|js|png|jpg|webp|woff2)(\?.*)?$") {
unset req.http.Cookie;
}
}
sub vcl_backend_response {
if (bereq.url ~ "\.(css|js|woff2)(\?.*)?$") {
set beresp.ttl = 30d;
set beresp.http.Cache-Control = "public, max-age=2592000";
}
if (beresp.http.Content-Type ~ "text/html") {
set beresp.ttl = 5m;
}
} ניטור Cache Hit Rate
curl -I https://mysite.com/api/products | grep -i x-cache # X-Cache-Status: HIT | MISS | BYPASS כותרת X-Cache-Status מציינת אם המשאב הוגש מהמטמון (HIT), החמיץ (MISS), או עוקף (BYPASS). ניטור כותרת זו מספק מדד מדויק ליעילות המטמון.
יעד Cache Hit Rate:
| סוג תוכן | יעד Cache Hit Rate |
|---|---|
| נכסים סטטיים (JS, CSS, גופנים) | >99% |
| דפי HTML | >80% |
| תגובות API ציבוריות | >70% |
מה כלול בעבודה
- ביקורת מפורטת של ההגדרה הנוכחית עם דוח.
- עיצוב אסטרטגיית מטמון (URLs, TTL, פסילה).
- הגדרת CDN (Cloudflare Cache Rules, Varnish VCL, כותרות Nginx).
- בדיקות וניטור (X-Cache-Status, TTFB, LCP).
- תיעוד הגדרות והדרכת צוות.
- חודש תמיכה להתאמות כללים.
- שיפור מובטח ב-Cache Hit Rate (בדרך כלל >80% עבור HTML).
- הפחתה משוערת בעלות רוחב פס חודשית: $200–$800.
אילו מדדים לעקוב?
בנוסף ל-Cache Hit Rate, עקבו אחר TTFB (יעד <50 אלפיות השנייה) ו-LCP (<2.5 שניות). אנו ממליצים להקים לוח מחוונים ב-Cloudflare Analytics או Grafana לניטור רציף. מטמון קצה אינו הגדרה חד-פעמית — הוא דורש סקירת כללים תקופתית ככל שהארכיטקטורה משתנה.
צרו קשר לביקורת של ההגדרה הנוכחית שלכם. הזמינו הגדרת Edge Caching מפתחות — קבלו הגדרה מתועדת וחודש תמיכה. לקוחות טיפוסיים רואים חיסכון חודשי של $200–$500 בעלויות רוחב פס של CDN.







