אנחנו מגייסים: האם אתה מפתח PHP (Laravel) שאפתן ובעל מוטיבציה?

img

כיצד גילינו בקשות API איטיות באתר WordPress

והשגנו שיפור מהירות של יותר מפי 40 לאחר ביצוע התיקונים

רקע

אנו מפתחים פלטפורמה חינוכית המאפשרת לך:

יצירת מצגות שיעורים עם שקופיות בסוגי תוכן שונים

שיתופן עם מורים אחרים

שכפול ועריכת תוכן להתאמה לקבוצות גיל שונות

הצגת מצגות אלו לתלמידים וקבלת משוב מהם בצורת תשובות לשאלות

כיצד מצאנו ותיקנו בקשות API איטיות באתר WordPress

כל הפעולות עם התוכן כרוכות בכמויות גדולות של נתונים ותקשורת פעילה עם מסד הנתונים.

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

הסטק הטכנולוגי של הפלטפורמה

קוד

השתמשנו ב-WordPress כמנוע ובתוסף המפורסם LearnDash ליישום פונקציונליות מערכת ניהול הלמידה (LMS). שילוב זה אפשר ללקוח לפתח את הפונקציונליות הנדרשת ולהשיק הדגמה לבחינת תפיסת המשתמשים הסופיים בפרק זמן קצר. במהלך שינוי הדרישות, נאלצנו לוותר על רוב התכונות שמספק LearnDash ולבנות מחדש את הגישה ליצירת תוכן – החלפת קורסים בשיעורים ושיעורים בשקופיות.

כיצד מצאנו ותיקנו בקשות API איטיות באתר WordPress
כיצד מצאנו ותיקנו בקשות API איטיות באתר WordPress

בחרנו ב-Vue.js כמסגרת צד-הלקוח, מה שאפשר לנו להפוך את ממשק המשתמש של הפונקציונליות המרכזית של הפרויקט לרספונסיבי – כלומר, פונקציונליות העורך והצגת השיעורים. המיוחד ביישום טמן בבניית התקשורת בין הלקוח לשרת בצורת בקשות API. הבקשות נשלחות בכמויות גדולות עקב הגישה לניהול פוסטים ב-CMS הנבחר (WordPress), ולכן צמצום מספר הבקשות לא היה אפשרי. עם זאת, מקביליות וביצוע אסינכרוני אפשרו להשיג את התוצאות הרצויות בביצועים.

שרת

הארכיטקטורה המדרגית המבוססת על AWS אפשרה לנו לוודא שקיבולת השרת מספיקה לעיבוד זרימה גדולה של משתמשים ולהבטיח ביצועים ראויים בשיאי העומס. עם זאת, הפעם המצב התברר כבלתי צפוי כל כך, עד שסקיילינג אופקי ואנכי לא נתנו תוצאות טובות יותר.

כיצד מצאנו ותיקנו בקשות API איטיות באתר WordPress

איתור הבעיה ותיקונה

בעיות

תיאור הבעיה הראשוני הסביר שעורך השיעורים בצד הלקוח שפותח, כמו גם דפי עריכת רשומות בלוח הניהול, לקחו זמן רב מדי לטעינה. הדבר הראשון שעלה בדעתנו היה שלוח הניהול נכתב ב-React והשתמש בבקשות API לאחזור קטגוריות, טקסונומיות ותגיות. גם עורך השיעורים שלנו השתמש בבקשות API לקריאה וכתיבה של תוכן שיעורים.

לאחר בחינת לשונית ה-“network” בכלי הפיתוח של הדפדפן, גילינו שכל הבקשות האסינכרוניות לשרת פעלו כצפוי, למעט בקשות API שלקחו לפחות 3 שניות כל אחת. בדיקה מפורטת של הבקשה הראתה TTFB גבוה (זמן לבייט הראשון), המצביע על איטיות בצד הבאקאנד או השרת.

חושב אמפירית שלא משנה אילו פעולות ביצע נקודת הקצה של ה-API, התוצאה תהיה תמיד זהה – לפחות 3 שניות לעיבוד, שגדלות ל-5-6 שניות עם צמיחת מסד הנתונים.

ראוי לציין במיוחד שסביבת הייצור התבררה כשלב האיטי ביותר מכיוון שהיא כללה את הכמות הגדולה ביותר של נתונים – פוסטים ומטא-נתונים של הפוסטים. כדי לאמת שמהירות הטעינה פוחתת עם גידול כמות הנתונים, בסיס הייצור הופעל בסביבת בדיקה שם קיבלנו אישור לתיאוריה זו.

כיצד מצאנו ותיקנו בקשות API איטיות באתר WordPress
Image background

שאלנו את עצמנו שוב ושוב את אותה השאלה:

מדוע מהירות בקשת API שאינה משתמשת במסד הנתונים בעת עיבוד לוגיקה פנימית מושפעת מגודל מסד הנתונים?

פתרונות

לכן, הוחלט לכבות את התוספים בזה אחר זה כדי לברר את השפעתם על מהירות הטעינה. התוצאה הראשונה הגיעה לאחר השבתת תוסף LearnDash, שתוכנו הוא הבסיס של כל הפלטפורמה. מהירות עיבוד בקשות ה-API הייתה באופן מיידי מהירה פי 40! עם זאת, בהתבסס על חוסר האפשרות לוותר על התוסף ולפנות לחיפוש חלופות, החקירה נמשכה.

תוך עיון בקוד התוסף LearnDash, החל מאתחול וכולל קבצים, הוספנו הערות לבלוקים גדולים של קוד ובדקנו את השפעתם על המהירות. תשומת לב מיוחדת הוקדשה לפונקציונליות ה-REST API, שם הופיע ה-hook הראשון. על ידי הוספת הערות מלאה לשימוש ב-REST API על ידי התוסף, הבעיה נפתרה. עם זאת, גם זה לא היה פתרון ישים. תוך מעקב אחר השרשרת, מצאנו את הסיבה להתנהגות זו.

תוסף LearnDash השתמש ב-hook של WordPress בשם rest_api_init לא רק כדי לרשום את נקודות הקצה של ה-API והשדות שלו, אלא גם כדי לכלול בקרים נוספים עם לוגיקה, שאחד מהם הכיל בחירה רציפה ענקית ולא מאופטמת ממספר טבלאות במסד הנתונים. כך, ללא קשר לפונקציית ה-API של הנתיב, בחירה זו בוצעה בכל פעם ששלחנו בקשת API לשרת (וכאמור לעיל, נשלחות הרבה בקשות). הסיבה לגישה זו לא הייתה ברורה, אולם נשלחה בקשת הבהרה למפתחי תוסף LearnDash בתקווה לתיקון בגרסאות עתידיות.

נוכחות פילטר בקוד התוסף (שסופק על ידי צוות התמיכה של LearnDash בתגובה לפנייתנו) סייעה לתקן את המצב ללא בעיות ולאפשר הדרת בקרים הטעונים עם לוגיקה לפני טעינתם. כך עשינו עם הבקר הבעייתי.

תוצאות:

קודם כל, הבעיה של פעולה איטית של בקשות API נפתרה. כעת הן נטענות אפילו מהר יותר מבעבר עם מערך הנתונים המינימלי. העלייה הכוללת במהירות הטעינה על הכמות הנוכחית של הנתונים היא פי 40!

הודות לביטול השליפה ה”כבדה” עם כל בקשת API, הצלחנו להפחית את העומס הכולל על שרת מסד הנתונים, שהוא בונוס נחמד ומצדיק את הזמן שהושקע בחיפוש צוואר הבקבוק.

בהתבסס על מידע שסיפק ראש צוות WordPress של CitrusDev, צוות התמיכה של LearnDash הגיב לפנייתנו וסופק עדכון לתוסף. שיפורים אלו שולבו בקוד המקור הבסיסי של התוסף. כתוצאה מכך, משתמשים ברחבי העולם של תוסף LearnDash ו-WordPress REST API קיבלו האצה משמעותית באתרים שלהם. זו הסיבה שחשוב כל כך לעדכן את WordPress וכל התוספים בזמן.

כיצד מצאנו ותיקנו בקשות API איטיות באתר WordPress
Image background

תגובה מ

צוות הפיתוח של LearnDash

עדכנו זאת ומתכננים לשחרר את השינויים בגרסה הראשית הבאה.

תודה על המשוב שלכם – צוות הפיתוח לקח זאת בחשבון וגם הוסיף שיפורים משלו.

Image background

אם אתם רוצים שהמפתחים שלנו ינתחו וי
חקרו את הבעיות באתר WordPress שלכם
,
אל תהססו לפנות אלינו בכל עת.

צרו קשר
דמה התקן BLE באמצעות אפליקציית nRF Connect for Mobile.
24.07.2026

דמה התקן BLE באמצעות אפליקציית nRF Connect for Mobile.

כאן, ב-CitrusDev, צוות הפיתוח למובייל נתקל באתגר של עבודה על פרויקטים של לקוחות ללא חומרה (מכשירים אמיתיים). לכן המפתחים שלנו משתמשים בתוכנה נוספת כדי לדמות התקני BLE באמצעות nRF Connect. אפליקציית nRF Connect for Mobile מתאימה לבדיקה ולהדמיה של תהליכי העבודה הבסיסיים של BLE, כגון סריקה, התחברות ופעולות קריאה/כתיבה/Notify. האפליקציה מספקת הגדרות ראשוניות לשרת GATT, […]
קרא עוד
פתרונות מיקום פנימי ומעקב אחר נכסים באמצעות Bluetooth
24.07.2026

פתרונות מיקום פנימי ומעקב אחר נכסים באמצעות Bluetooth

Bluetooth מציע טכנולוגיית מיקום פנימי ומעקב חסכונית, יעילה באנרגיה וקלה לפריסה. היא מאפשרת לאתר ולעקוב בקלות אחר אנשים וציוד, למצוא מסלולים ולקבל מידע חשוב בתוך מבנים ומתקנים כגון שדות תעופה, מרכזי קניות ועוד. :contentReference[oaicite:0]{index=0} ברוב המקרים, למידע על המיקום יש פוטנציאל ליצור הזדמנויות נוספות. לדוגמה, ניתן לשלב אותו עם טכנולוגיות אחרות כגון IoT, מערכות אנליטיקה […]
קרא עוד
הערים החכמות המובילות בעולם
24.07.2026

הערים החכמות המובילות בעולם

לראשונה החלו לדבר על המושג “עיר חכמה” בשנות ה-90. הרשויות הבינו כבר אז שטכנולוגיות המידע הן העתיד. בתחילה, הרעיון של עיר חכמה נועד בעיקר להגן על הסביבה מפני ההשפעות המזיקות של פעילות האדם.  חלפו שני עשורים, וכיום Smart City הוא כבר מגמה עולמית. ערים רבות משקיעות בחדשנות טכנולוגית רחבת היקף בתחומי התחבורה, הביטחון, הקיימות ועוד. […]
קרא עוד
מהי עיר חכמה
24.07.2026

מהי עיר חכמה

עיר חכמה היא מושג שהפך לפופולרי מאוד בשנים האחרונות. במהותה, עיר חכמה שואפת לענות על צורכי תושביה, להבטיח את רווחתם וביטחונם, ובמקביל לשמור על קיימות כלכלית. אלו הם האתגרים המרכזיים של ערי העתיד. אז מהי עיר חכמה? עיר חכמה היא מערכת מקושרת של טכנולוגיות מידע ותקשורת, המשולבות עם האינטרנט של הדברים (IoT). היא מפשטת את […]
קרא עוד
**2020 – שנת האפליקציות לנייד**
24.07.2026

**2020 – שנת האפליקציות לנייד**

העתיד תמיד מגיע כשאיננו מוכנים אליו. שנת 2020 הייתה קשה ובלתי צפויה. על פי קרן המטבע הבינלאומית (IMF), השנה הזו עלתה לכלכלה העולמית כ-28 טריליון דולר. מגפת COVID-19 שינתה את חיי היומיום ואת אופן העבודה שלנו. הסתמכנו על מכשירים ניידים כמעט לכל פעילות יומיומית: תקשורת, עבודה, למידה ובידור. ברור שהמגפה האיצה את אימוץ השימוש במובייל […]
קרא עוד
Bluetooth Mesh במכשירים ניידים: המדריך המלא לשנת 2025
10.10.2025

Bluetooth Mesh במכשירים ניידים: המדריך המלא לשנת 2025

Bluetooth Mesh במכשירים ניידים: המדריך המלא לשנת 2025 מבוא ל-Bluetooth Mesh טכנולוגיית Bluetooth שינתה את הדרך שבה המכשירים שלנו מתקשרים זה עם זה. מאוזניות אלחוטיות ועד שעונים חכמים, Bluetooth מאפשר חיבורים חלקים ונוחים. אך כאשר מדובר ברשתות בקנה מידה גדול — כמו מאות מנורות חכמות או חיישני IoT — Bluetooth המסורתי אינו מספיק. כאן נכנס […]
קרא עוד
Image background

שלחו הודעה לצוות שלנו כדי לראות כיצד נוכל לעזור

אנחנו צריכים רק כמה שעות!

לא יותר מ-2 ימי עבודה מרגע קבלת הבקשה שלכם.