אנחנו מגייסים: האם אתה מפתח 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 שלכם
,
אל תהססו לפנות אלינו בכל עת.

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

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

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

איך ליצור אפליקציית Launcher מותאמת אישית ל־Android TV

עם הפופולריות הגוברת של מכשירי Android TV OS, פיתוח עבור פלטפורמה זו הפך לרלוונטי יותר ויותר. Android TV היא גרסה של מערכת ההפעלה Android שתוכננה במיוחד עבור טלוויזיות חכמות וממירים, ומספקת גישה למדיה ומשחקים דרך Google Play. עם זאת, לא כל אפליקציות Android תואמות אוטומטית ל-Android TV, ולכן פיתוח ואופטימיזציה נכונים הם קריטיים. בפוסט זה […]
קרא עוד
מדריך מקיף ל־Jaibaida BMS: אינטגרציה עם אפליקציות iOS
05.11.2024

מדריך מקיף ל־Jaibaida BMS: אינטגרציה עם אפליקציות iOS

הבנת מערכות ניהול סוללות Jaibaida Jiabaida BMS (או JBD BMS) הן מערכות חכמות המיועדות לניטור ולניהול סוללות ליתיום-יון, ובפרט סוללות Lithium Iron Phosphate ‏(LiFePO4). מערכות אלו מבטיחות ביצועים אופטימליים, בטיחות ואורך חיים ארוך יותר של הסוללה. כיצד JBD BMS פועלת מערכת JBD BMS מנטרת ושולטת במספר פרמטרים מרכזיים: מתח תאים (Cell Voltage): מבטיח שכל תא […]
קרא עוד
השוואה מקיפה בין Dokan Multivendor ל־WCFM Marketplace
05.09.2024

השוואה מקיפה בין Dokan Multivendor ל־WCFM Marketplace

ככל שתעשיית ה-eCommerce ממשיכה לצמוח, יצירת מרקטפלייסים מרובי ספקים הפכה לדרך פופולרית עבור עסקים להרחיב את ההיצע שלהם. WooCommerce, כאחת הפלטפורמות הגמישות ביותר להתאמה אישית, מציעה מגוון תוספים המאפשרים למשתמשים להקים מרקטפלייסים מרובי ספקים. שניים מהפתרונות המובילים בתחום הם Dokan Multivendor ו-WCFM Marketplace. במאמר זה נסקור את ההבדלים המרכזיים בין התוספים כדי לעזור לכם להבין […]
קרא עוד
איך לבחור שותף אמין לפיתוח פרויקט IoT
12.08.2024

איך לבחור שותף אמין לפיתוח פרויקט IoT

ככל שתעשיית ה-IoT (האינטרנט של הדברים) ממשיכה להתפתח, עסקים רבים מאמצים פתרונות חכמים המחברים בין מכשירים ומאפשרים קבלת החלטות חכמה ויעילה יותר. בין אם אתם מעוניינים לייעל תהליכים עסקיים או ליצור מקורות הכנסה חדשים, פרויקט IoT יכול להפוך לגורם משנה משחק. עם זאת, הצלחת הפרויקט תלויה במידה רבה בבחירת שותף הפיתוח הנכון. בשל המורכבות והאתגרים […]
קרא עוד
סוגי התקני IoT: מהפכת העולם המחובר
08.07.2024

סוגי התקני IoT: מהפכת העולם המחובר

אינטרנט של הדברים (IoT) משנה את העולם שלנו באמצעות חיבור של אובייקטים יומיומיים לאינטרנט, מה שמאפשר להם לשלוח, לקבל ולעבד נתונים. רשת מקושרת זו של מכשירים משתרעת על פני מגוון תעשיות, ומשפרת יעילות, נוחות ופרודוקטיביות. הנה סקירה של הסוגים השונים של מכשירי IoT והתפקידים המשמעותיים שלהם בחיים המודרניים. 1. מכשירי בית חכם תרמוסטטים חכמים: מכשירים […]
קרא עוד
Image background

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

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

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