Notice: Undefined index: premium-vscroll in /home/codespir/domains/codespire.co.il/public_html/wp-content/plugins/premium-addons-for-elementor/includes/class-addons-integration.php on line 140

האצת שאילתות wp_query

בכל פרוייקט אני חשוב כידצ ניתן לייעל את השאילתות, במיוחד אלו המורכבות, על מנת להפוך את האתר ליותר מהיר. רובנו משתמשים ב-wp rocket או total cache וחבריהם שאכן עושים עבודה הנדרת. אבל זה לא תמיד מספיק אם השאילתה שלך ארוכה מאוד או אם אתה קורא להמון שאילתות ולא מייעל את התהליך.
לכן, מצאתי מספר שאילתות שעשויות לייעל באופן משמעותי את הקוד שלכם ולהפוך אותו לקריא מאוד.

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

יש לכם אתר עם 1000 פוסטים, 100 טיוטות שבכל אחד מהפוסטים והטיוטות שמורות לכם 5 גרסאות (גרסאות עריכה) אחורנית (הרי וורדרפס שומר גרסאות אחורנית בעריכה כדי שתוכלו תמיד לשחזר נתונים בפוסטים ועמודים). הבעיה העיקרית היא שכל גרסא כזאת היא פוסטייפ עם כל הנתונים. הממשעות היא במקום 1000 פוסטים יש לנו כבר 6000 פוסטים (1000 שמפורסמים ועוד 5000 גרסאותש להם).
עכשיו צריך להתחיל לחפש את ה-6 האחרונים. אז השאילתה לסמד נתונים רצה, ומחזירה את ה-6. אבל (וזה אבל גדול) היא גם מחזירה את מספר הפוסטים המקסימלי, כמה סך הכל, כמה עמודים יש וכו׳ (כל ההכנה ל-pagination).
מהדוגמא הזאת ניתן להבין שבעצם השאילתה החזירה 6 פוסטים אבל עברה על כל הטבלה ובדקה עד אחרון הפוסטים, מה עונה על הדרישות שלכם (למשל פוסט רגיל, או פוסטייפ ספציפי, בדיקה מול טבלאת המטא ועוד).

בזבוז מטורף כאשר רוצים להציג בסך הכל את 6 המוצרים האחרונים בחנות. לא ?

אז כן, זה בזבוז מטורף שאפשר להתגבר עליו בקלות רבה.

$args = array(
	// כל המשתנים של הקוורי שלכם.... //
	'no_found_rows' => true,
	'update_post_term_cache' => false, // grabs terms, remove if terms required (category, tag...)
	'update_post_meta_cache' => false, // grabs post meta, remove if post meta required
);
$loop = new WP_Query( $args );


האיבר 'no_found_rows' בעצם מחליט מתי להשתמש או לא להשתמש ב״עצירה״ בעת מציאת הפוסטים. למשל אם הגדרתי שאני רוצה 6 פוסטים והוא מצא רק 6 פוסטים הוא יצור (אם מוגדר true). הוא גם לא יחזיר את כל הפוסטים וגם לא יחזיר את ה-count שלהם, pagination וכל ההכנה לכך. מה שישפר במעט את הביצועים של האתר שלנו.

׳update_post_term_cache׳ ו-׳update_post_meta_cache׳ אחראים על יצירת אובייקט קאש. האובייקט הזה קיים רק כאשר משתמשים בתוספי קאש ויכול לעזור בעצם לא לשמור שאילתות מסויימות בקאש (אמור לשפר את הביצועים שלש אילתות שנקראות בכל מצב ולקצר את הזמן שלהם כי אנחנו מרוידים כאן פעולה אחת לפחות).

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

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

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *