כל מי שקורא את הבלוג שלי יודע שאני פרפקציוניסט כשזה נוגע לאופטימיזציה ושיפור מהירות אתרי וורדפרס. אם הגעתם למאמר הזה, כנראה שאתם מנסים להבין למה האתר שלכם איטי.
אחרי יישום טיפים שונים לאופטימיזציה, ייתכן שהגעתם למסקנה שהבעיה היא בקובץ admin-ajax.php.
אבל למה הקובץ הזה גורם לבעיות ביצועים? במאמר הזה אסביר את שורש הבעיה ואציג כיצד לשלוט בה בצורה יעילה באמצעות WP Rocket.
שתי הבעיות המרכזיות עם admin-ajax.php:
- הליבה של וורדפרס: שימוש מופרז ולעיתים מיותר בכוח העיבוד של השרת שנגרם מפונקציונליות בסיסית.
- תוספים חיצוניים: תוספים שיוצרים קריאות AJAX מופרזות באמצעות
admin-ajax.php, דבר שפוגע בביצועים של החזית.
הבנת admin-ajax.php ו-Heartbeat API
בגרסה 3.6 של וורדפרס הוצג WordPress Heartbeat API, שמאפשר תקשורת בין הדפדפן לשרת. API זה מסייע בניהול סשנים, מעקב אחר גרסאות פוסטים ושמירת טיוטות אוטומטית בוורדפרס.
Heartbeat API משתמש בקובץ /wp-admin/admin-ajax.php לשליחת קריאות AJAX מהדפדפן. למרות שזה שימושי לעדכונים בזמן אמת בממשק הניהול, הוא עלול לגרום לקריאות POST רבות שמעמיסות על CPU השרת ומייצרות קריאות PHP מיותרות.
יש לציין כי ברירת המחדל של מרווח הפעימות היא כ-15 שניות בעורך הפוסטים, וכ-60 שניות בלוח הבקרה. המשמעות היא שכל טאב פתוח בדפדפן שולח בקשות לשרת בתדירות גבוהה למדי, גם כשאינכם עורכים תוכן באופן פעיל.
דוגמה: דמיינו שיש לכם מספר טאבים פתוחים בדפדפן, שכולם משתמשים ב-Heartbeat API. כל טאב שולח בקשות ל-
admin-ajax.phpבמרווחי זמן קבועים, דבר שעלול להעמיס על השרת.
שימו לב בוידאו הבא לאותן פעימות אשר מתבצעות כשדף העריכה של פוסט זה פתוח (הוידאו הינו במהירות מוגברת בשביל שלא תתייבשו):
אופטימיזציה של Heartbeat API באמצעות WP Rocket

WP Rocket מציע הגדרות מובנות לניהול ואופטימיזציה של Heartbeat API, שמאפשרות שליטה על ההתנהגות שלו ללא צורך בקוד מותאם אישית. כך תשתמשו ב-WP Rocket כדי לנהל את Heartbeat API:
שלב 1: גשו להגדרות Heartbeat
בממשק הניהול של וורדפרס, גשו אל הגדרות > WP Rocket > Heartbeat. כאן תוכלו לשלוט בהתנהגות Heartbeat API עבור אזורים שונים באתר.
שלב 2: התאימו את התנהגות Heartbeat
WP Rocket מציע שלוש אפשרויות עיקריות לניהול Heartbeat API:
- Reduce Heartbeat Activity: מפחית את התדירות של קריאות ל-
admin-ajax.phpמפעם בדקה לפעם בשתי דקות (120 שניות). זוהי האפשרות המומלצת לשמירה על איזון בין ביצועים לפונקציונליות. - Disable Heartbeat: מבטל לחלוטין את Heartbeat API באזור הנבחר. השתמשו בזה רק אם אתם בטוחים שזה לא יפגע בפונקציונליות חיונית, כמו שמירה אוטומטית.
- Do not limit: משאיר את Heartbeat API פעיל ללא הגבלה. זוהי ברירת המחדל.
ניתן להגדיר כל אחת מהאפשרויות הללו בנפרד עבור שלושה אזורים:
- Backend (ממשק הניהול): שולט על Heartbeat API בלוח הבקרה.
- Post Editor (עורך הפוסטים): שולט על Heartbeat API במסכי עריכת תוכן.
- Frontend (החזית): שולט על Heartbeat API בצד הלקוח של האתר.
שלב 3: בחרו את ההגדרות הטובות ביותר
לרוב אתרי וורדפרס, אני ממליץ להפחית את הפעילות במקום לבטל את Heartbeat API לחלוטין. הנה דוגמת תצורה:
- ממשק הניהול: הפחיתו פעילות או בטלו, שכן אזור זה לא דורש עדכונים תכופים לרוב.
- עריכת פוסטים: הגדירו להפחתת פעילות כדי לשמור על פיצ׳רים כמו שמירה אוטומטית ונעילת פוסטים (Post Locking).
- החזית: בטלו לחלוטין אלא אם תוספים מסוימים תלויים בקריאות AJAX דרך Heartbeat.
תצורה זו שומרת על איזון בין שיפור ביצועים לשימור פונקציות חיוניות כמו שמירה אוטומטית או תוספים.
שימו לב: ביטול Heartbeat API בממשק הניהול עלול למנוע מכלי Site Health של וורדפרס לטעון תוצאות כראוי. אם אתם משתמשים ב-Site Health לניטור האתר, העדיפו הפחתת פעילות על פני ביטול מלא.
שליטה ב-Heartbeat API באמצעות קוד PHP
אם אתם מעדיפים שליטה מדויקת יותר ללא תוסף, וורדפרס מספקת את הפילטר heartbeat_settings שמאפשר לשנות את מרווח הפעימות ישירות. לדוגמה, הקוד הבא מגדיר את המרווח ל-120 שניות:
add_filter( 'heartbeat_settings', function( $settings ) {
$settings['interval'] = 120;
return $settings;
} );הערך המינימלי שניתן להגדיר הוא 15 שניות והמקסימלי הוא 120 שניות. שיטה זו שימושית במיוחד אם אתם רוצים להגדיר מרווח ספציפי שאינו זמין דרך ממשק WP Rocket.
כיצד WP Rocket משפר ביצועים
על ידי הפחתת התדירות או ביטול Heartbeat API באזורים לא מנוצלים, WP Rocket מפחית משמעותית את מספר הבקשות הנשלחות ל-admin-ajax.php. צמצום זה מפחית ישירות את העומס על השרת, משפר את יעילות ה-CPU ומשפר את זמני הטעינה של הדפים.
לדוגמה, בחירת האפשרות ״Reduce activity״ ב-WP Rocket מגדילה את המרווח ל-120 שניות במקום ברירת המחדל, דבר שמפחית בצורה משמעותית בקשות מיותרות. ההשפעה מורגשת במיוחד באתרים עם עורכים מרובים או שימוש כבד בממשק הניהול.
ניתוח תוספים המשתמשים ב-admin-ajax.php
בנוסף לאופטימיזציה של Heartbeat API, חשוב לזהות תוספים שעושים שימוש מופרז ב-admin-ajax.php.
השתמשו בלשונית ״Network״ ב-Chrome Developer Tools (או בכלי מפתחים מקביל בדפדפן שלכם) כדי לסנן בקשות מסוג admin-ajax.php ולבדוק את הפרמטר action בכל בקשה. כך תוכלו לזהות את התוספים האחראיים לקריאות שרת מרובות ולהחליט האם להגדיר מחדש, להחליף או להשבית אותם.
בואו נראה דוגמה מעשית: פתחו את כלי המפתחים, עברו ללשונית ״Network״, סננו לפי admin-ajax ובדקו את ה-Payload של כל בקשה. הפרמטר action יגלה לכם איזה תוסף או פונקציה יזמו את הקריאה.
שאלות נפוצות
שאלות נפוצות בנושא Heartbeat API ואופטימיזציה של admin-ajax.php:
admin-ajax.php. הוא אחראי על שמירה אוטומטית, נעילת פוסטים, התראות על פקיעת סשן ועוד. כל בקשה צורכת משאבי CPU בשרת, ולכן תדירות גבוהה של פעימות עלולה להאט את האתר, במיוחד בשרתים משותפים.admin-ajax.php?
admin-ajax. בכל בקשה, בדקו את הפרמטר action ב-Payload - הוא יגלה לכם איזה תוסף או פונקציה יזמו את הקריאה. כך תוכלו להחליט אם להגדיר מחדש, להחליף או להשבית תוספים בעייתיים.heartbeat_settings שמאפשר לשנות את מרווח הפעימות. ניתן להגדיר ערך בין 15 ל-120 שניות. לדוגמה, הוספת הקוד $settings['interval'] = 120; בתוך הפילטר תגדיר את המרווח לשתי דקות. שיטה זו מתאימה למפתחים שמעדיפים שליטה מדויקת ללא תוסף נוסף.לסיכום
ניהול Heartbeat API בוורדפרס הוא חיוני לשמירה על ביצועים מיטביים, במיוחד באתרים עמוסים. WP Rocket מספק דרך אינטואיטיבית לשליטה ב-Heartbeat API, עם אפשרויות גמישות להפחתת עומס על השרת תוך שמירה על פונקציונליות הכרחית.
למפתחים שמעדיפים גישה ידנית, הפילטר heartbeat_settings מאפשר שליטה מלאה על מרווח הפעימות ישירות מהקוד. בכל מקרה, הגישה המומלצת היא להפחית תדירות במקום לבטל לחלוטין, כדי לשמור על פיצ׳רים חיוניים כמו שמירה אוטומטית ונעילת פוסטים.
מאמרים נוספים על שיפור מהירות בוורדפרס:


נהדר, קראתי על זה משהו באנגלית, טוב שיש גם מאמר בעברית.
זה באמת גורם לעומס על השרת, היה לי אתר שעשה את זה
היי, תודה על המאמרים המדהימים, לומד ממך המון! זה לא מובן מאליו …
התקנתי את הפלאג, אך כנראה הוא התעדכן מאז הכתבה הזאת.
מה אני צריך להגדיר כאן? צילמתי מסך ↓
https://prnt.sc/iney6z
תודה רבה
תודה עמרי! 🙂
תחת Heartbeat Behaviour תשנה ל Modify. סמן את שלושתם ותשנה את ה Frequency למטה למה שתחליט….
תודה רבה רועי על המאמרים המעולים שלך, אין לי מילים! כל פעם שאני נתקעת המקום הראשון שאני עושה חיפוש בנושא, הוא כאן בבלוג הנפלא והמושקע שלך.
תמשיך לעשות חיל, ולכתוב לנו עוד מאמרים מצוינים ובהירים.
על לא דבר דסי ותודה לך 🙂
האם אותה בעיה קיימת גם באג'קס לרסט אי פי אי של וורדפרס?