מדוע מטמון רב-שכבתי קריטי לביצועי Drupal
תרחיש טיפוסי: אתר Drupal עם 10,000 מבקרים יומיים מתחיל לפגר בעומס שיא. ללא מטמון, כל עמוד מייצר עד 30 שאילתות SQL, ועם 1,000 סשנים במקביל, מגבלות המעבד נחצות והאתר קורס. TTFB מזנק ל-2 שניות, ו-Core Web Vitals נכשלים. בפרויקט אחד עם 50,000 ביקורים ביום, הפחתנו את TTFB מ-2.5 שניות ל-8 אלפיות השנייה על ידי יישום מטמון רב-שכבתי. הצוות שלנו של מומחי Drupal עם ניסיון של 12+ שנים ו-60+ יישומי מטמון מוצלחים מספק תוצאות מדידות.
אנו נתקלים בבעיה זו עשרות פעמים. הפתרון הוא שילוב של Internal Page Cache, Dynamic Page Cache, Redis, Varnish ו-BigPipe. מחסנית זו מפחיתה את עומס השרת ב-90% ומקצרת את TTFB לעשרות אלפיות השנייה. אופטימיזציה של ביצועי Drupal דורשת הבנה כיצד פועלים תגי מטמון וביטול תוקף.
בעיות שאנו פותרים
- TTFB גבוה — עמודים נבנים מאפס עבור כל בקשה, גם אם הם סטטיים. מקרה טיפוסי: Drupal ללא מטמון מייצר עמוד ב-500–1500 אלפיות השנייה, מתוכן 300–800 אלפיות השנייה הן שאילתות SQL.
- עומס יתר על מסד הנתונים — כל רינדור מפעיל עשרות שאילתות (N+1, תצוגות לא מותאמות). ב-100 בקשות בשנייה, מסד הנתונים עלול לקרוס.
- בלוקים דינמיים איטיים — אלמנטים מותאמים אישית (עגלה, סרגל משתמש) חוסמים את הרינדור. BigPipe פותר זאת עם רינדור סטרימינג.
ארכיטקטורת מטמון
Drupal היא אחת ממערכות ה-CMS הבודדות עם תמיכת מטמון מובנית ברמת הליבה. אנו משתמשים בארבע רמות:
Render Cache
מטמון למערכי רינדור בודדים (בלוקים, תצוגות, שדות). מבוטל על ידי תגי מטמון. דוגמה: בלוק החדשות האחרונות נשמר במטמון לשעה ומבוטל כאשר מתפרסם מאמר חדש.
Dynamic Page Cache
מטמון לעמודים עם קונטקסט (מחובר/מנותק, שפה, תפקיד). אינו מריץ את ה-bootstrap המלא אך עדיין נוגע ב-PHP. TTFB טיפוסי: 50–200 אלפיות השנייה.
Internal Page Cache
מטמון עמודים מלא למשתמשים אנונימיים. שומר HTML בדיסק/במסד נתונים. מופעל דרך אדמין או drush:
drush en page_cache -y drush cr תצורה: drush en page_cache -y drush cr .
מידע נוסף על תצורת Varnish לפרויקטים עם תעבורה גבוהה
Varnish פועל כ-reverse proxy מול Nginx/Apache. הוא שומר תגובות במטמון ומבטל את תוקפן באמצעות תגי מטמון כאשר תוכן מתפרסם. שילוב Varnish עם Drupal באמצעות מודול Purge מבטיח שתגי המטמון יכובדו לביטול תוקף גרעיני. תצורת VCL בסיסית:
vcl 4.1;
import std;
backend default {
.host = "127.0.0.1";
.port = "8080";
}
sub vcl_recv {
if (req.http.Cookie ~ "SESS|SSESS") {
return(pass);
}
if (req.method != "GET" && req.method != "HEAD") {
return(pass);
}
unset req.http.Cookie;
return(hash);
}
sub vcl_backend_response {
set beresp.ttl = 1h;
set beresp.grace = 1h;
return(deliver);
}
sub vcl_deliver {
set resp.http.X-Cache = obj.hits > 0 ? "HIT" : "MISS";
}Varnish משתמש במפתחות hash המבוססים על URL וכותרות מטמון, עם מצב grace ל-stale-while-revalidate ומצב saint לבדיקות בריאות של השרת האחורי. לשילוב, אנו משתמשים במודול Purge:
composer require drupal/varnish_purger drupal/purge
drush en purge purge_drush purge_ui purge_queuer_coretags purge_processor_cron varnish_purger -y
לפי ויקיפדיה, Varnish משתמש בתגי מטמון גרעיניים לביטול תוקף מדויק, דבר קריטי לאופטימיזציה של ביצועי Drupal.
אילו מדדי ביצועים לעקוב?
עקוב אחר TTFB, מספר שאילתות SQL, יחס פגיעות מטמון (HIT/MISS), LCP, CLS. כלים: מודולי Devel, XHProf, כותרות X-Cache מ-Varnish. שאף ל-TTFB מתחת ל-200 אלפיות השנייה ויחס פגיעות מטמון מעל 90%. בפרויקט אחד לאחר אופטימיזציה, TTFB ירד מ-1.2 שניות ל-12 אלפיות השנייה, ושאילתות SQL מ-250 ל-3 לעמוד. הצוות שלנו עם 60+ פרויקטי ביצועי Drupal משיג הפחתת TTFB ממוצעת של 95%. עבור אתר Drupal טיפוסי עם 50 אלף מבקרים ביום, מטמון רב-שכבתי חוסך 3,000 דולר בחודש בעלויות אירוח.
כיצד תצורת המטמון של Drupal משפיעה על Core Web Vitals
מטמון מוגדר כראוי משפר ישירות את LCP ו-INP. כאשר עמוד נשלח ממטמון Varnish, LCP יורד ל-500–800 אלפיות השנייה, ו-INP משתפר עקב ביטול משימות שרת ארוכות. עבור משתמשים מחוברים, BigPipe מפצל את הרינדור לסטרימים, ומקצר את הזמן לתוכן ראשון.
תצורת Redis עבור Drupal
התקן את מודול Redis, הגדר פרמטרים ב-settings.php:
$settings['redis.connection']['interface'] = 'PhpRedis';
$settings['redis.connection']['host'] = 'localhost';
$settings['cache']['default'] = 'cache.backend.redis';
$settings['cache']['bins']['render'] = 'cache.backend.redis';
$settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.redis';לאחר מכן, מאגרי המטמון מועברים ל-Redis, מה שמפחית את עומס מסד הנתונים ב-70–90%. תצורת Redis למטמון Drupal מורידה שאילתות ממסד הנתונים ומשפרת את ביצועי Drupal, במיוחד בשילוב עם OPcache Drupal. OPcache מאיץ את ביצוע סקריפטי PHP ב-30–50%.
מה כלול בעבודה
- ביקורת על הארכיטקטורה הנוכחית (לוגים, תצורות, עומס).
- יישום כל רמות המטמון (Internal Page Cache, Dynamic Page Cache, Redis, Varnish, BigPipe).
- תצורת PHP OPcache ואיגום CSS/JS.
- תיעוד תחזוקה והמלצות פריסה.
- הבטחת ביצועים: TTFB <200 אלפיות השנייה בעומס טיפוסי.
- הדרכת צוות בניהול מטמון וניטור.
- מעל 60 פרויקטים מותאמים, הפחתת TTFB ממוצעת של 95%.
חיסכון בעלויות תשתית יכול להגיע ל-80% עקב הפחתת עומס השרת. השקעה באופטימיזציה בדרך כלל מחזירה את עצמה תוך 2–3 חודשים. חבילות אופטימיזציה מתחילות ב-1,500 דולר.
תהליך ולוח זמנים
- ניתוח — לימוד הארכיטקטורה הנוכחית, לוגים, תצורות (יום אחד).
- עיצוב — בחירת מחסנית: Varnish מול מטמון Nginx, Redis מול Memcache (יום אחד).
- יישום — תצורת מטמון, BigPipe, Purge (2–3 ימים).
- בדיקות — בדיקות עומס, מדידת Core Web Vitals (יום אחד).
- פריסה — העלאה לייצור, תיעוד (יום אחד).
לוחות זמנים טיפוסיים: אופטימיזציה בסיסית — 2–3 ימים, עם Varnish — 5–7 ימים. התמחור מחושב באופן אישי. צור קשר לביקורת מפורטת.
תוצאות אופטימיזציה טיפוסיות
| תצורה | TTFB | שאילתות SQL |
|---|---|---|
| ללא מטמון | 800–2000 אלפיות השנייה | 100–300 |
| Dynamic Page Cache | 50–200 אלפיות השנייה | 5–20 |
| Varnish (אנונימי) | 1–5 אלפיות השנייה | 0 |
| Redis + OPcache | 100–300 אלפיות השנייה | 5–15 |
Varnish מהיר בערך פי 10 מ-Dynamic Page Cache עבור בקשות אנונימיות.
השוואת שיטות מטמון
| שיטה | סוג מטמון | המתאים ביותר ל |
|---|---|---|
| Internal Page Cache | עמוד מלא | משתמשים אנונימיים |
| Dynamic Page Cache | עמוד עם קונטקסט | כל המשתמשים (עם קונטקסט) |
| Varnish | מטמון חיצוני | אנונימיים, טעינה מוקדמת |
| Redis | מטמון בינארי | כל המאגרים, הורדת עומס ממסד הנתונים |
לפי ויקיפדיה, BigPipe היא טכנולוגיית רינדור סטרימינג שממזערת את הזמן לתוכן ראשון עבור משתמשים מחוברים.
לצוות שלנו ניסיון של למעלה מ-10 שנים ב-Drupal והוא השלים 50+ פרויקטי אופטימיזציה של ביצועים. הזמן ביקורת ביצועי Drupal עוד היום וקבל ייעוץ לפרויקט שלך.







