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

לפני שנה בערך התחלתי לשים לב לדפוס: מגיע אליי מישהו עם ציון 30 ב־PageSpeed בנייד, אחרי שכבר התקין שני תוספי האצה, שילם למישהו על ״אופטימיזציה״, וקנה חבילת אחסון יקרה יותר. והאתר עדיין נטען חמש שניות. כל אחד מהצעדים האלה נשמע הגיוני. אף אחד מהם לא התחיל מהשאלה הפשוטה: מה בעצם לוקח זמן?

איך רואים מה לוקח זמן?

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

אין צורך להבין את הכול. מספיק לשים לב לשלושה דברים: כמה קבצים יש בסך הכול, מה הקבצים הכי גדולים, וכמה זמן עבר עד שהשרת בכלל התחיל לענות (השורה הראשונה, העמודה ״Waiting״ או TTFB).

תמונות: הסיבה הכי שכיחה, והכי קלה

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

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

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

תוספים: לא הכמות, אלא מה שהם טוענים

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

ברשימה של Network מחפשים קבצים עם שמות של תוספים (הנתיב מכיל /plugins/שם-התוסף/). אם קובץ כזה נטען בעמוד שאין בו שום קשר לתוסף, זה מועמד: או שמגבילים אותו לעמודים הרלוונטיים, או שמחליפים אותו במשהו רזה, או שמוותרים על היכולת. הרבה פעמים מגלים תוסף שהותקן לפני שנתיים לניסיון ונשאר.

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

השרת: כשהעמוד מיוצר מחדש בכל ביקור

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

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

מה לא שווה לגעת בו

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

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

מה אני עושה במקרה כזה

אני מבקש קישור, ואת העמוד שהלקוחות שלך רואים ראשון (לפעמים זה לא עמוד הבית אלא עמוד השירות שהמודעה מובילה אליו). ואז:

  1. מודד לפני: זמן טעינה בנייד מואט, משקל העמוד, ומספר הבקשות. שומר צילום מסך. זו נקודת ההשוואה.
  2. עובר על שלושת המקומות: תמונות, סקריפטים לפי עמוד, ומטמון. כותב מה מצאתי ומה אני מציע לשנות.
  3. מגבה את האתר, ורק אז מטפל. תמונות בגודל ובפורמט נכון, הגבלת תוספים לעמודים שצריכים אותם, מטמון שעובד באמת.
  4. בודק שהטופס, הטלפון והוואטסאפ עדיין עובדים. שינוי במטמון הוא בדיוק הדבר שיכול לשבור טופס בשקט.
  5. מודד אחרי, באותם תנאים, ושולח לך את שני הצילומים זה ליד זה.

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

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