כל מה שצריך לדעת על קאש לוורדפרס

לפעמים ההבדל בין אתר שעולה מהר לאתר איטי הוא רק שימוש נכון בקאש. מה זה בכלל קאש ואלו סוגי קאש קיימים? כל מה שצריך לדעת על קאש לוורדפרס.
All You Need to Know About Wordpress and Server Cache

תוכן עניינים

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

מה זה קאש

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

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

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

אלו מנגנוני קאש קיימים

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

דפדפן

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

CDN

ניתן לבצע קאש לתוכן סטאטי או לבצע קאש מלא באמצעות CDN. ב- CDN סטנדרטי, קאש לתוכן סטאטי הוא פשוט על ידי הפניה מתאימה. ב Cloudflare ניתן באמצעות Page Rules לבצע סוגי קאש שונים. במקרה שאין קאש לדף שהגולש מבקש, הבקשה תגיע ל CDN ואם שם יש קאש, התוכן יסופק מהקאש.

Full Page Caching

קאש זה ממומש בשרת כ- Reverse Proxy. הוא שומר את התוצאה של בקשה כלשהי בזכרון ה-RAM או בדיסק של השרת וברגע שהוא מקבל את הבקשה ויש לו תשובה בשבילה, הוא ישלוף את הבקשה מה-RAM ולא יגרום לסרבר לעשות את העבודה. יש כמה סוגי מימוש של קאש כזה, למשל Varnish הוא HTTP reverse proxy והוא מיועד לטפל בקאש של בקשות HTTP, או Nginx שהוא server reverse proxy. יש הבדלים ביניהם גם במימוש של הקאש אבל יותר מזה, הם פשוט מוצרים שונים. ממליץ לקרוא השוואה ביניהם באתר של KeyCDN. המימוש הפנימי כמו איפה הקאש ישמר בראם או בדיסק יכול להיות שונה, ההבדל הוא שהראם הרבה יותר מהיר כמובן. בכל מקרה זה יהיה מהיר יותר מלבצע את כל העבודה מחדש.

Object Cache

בשלב זה מדובר כבר על קאש לדברים משתנים, שאילתות DB. אנחנו צריכים להביא נתונים בהתאם לבה ספציפית של הגולש. למשל הצגה של כל המוצרים בטווח מחירים מסוים. במקרה שבאותה בקשה יצטרכו להתבצע כמה שאילתות זהות, יש מנגנון קאש מובנה בוורדפרס שמטפל בזה.
אבל במקרה שמדובר בשתי בקשות שונות לשרת ויש בהן אותה שאילת DB, בשביל זה צריך Persistent Object Cache. פתרון כזה מספקים למשל Memcached או Redis. אם נחזור לדוגמה שלנו, משתמש גולש לדף באתר שלכם, אין קאש בדפדפן והוא מגיע ל CDN. גם שם אין קאש, הוא מגיע ל Reverse Proxy, גם שם אין קאש, השרת יצטרך להכין את הדף המבוקש ותוך כדי יצטרך לבצע שאילתות DB, כאן נכנס Object Cache לתמונה. אם הוא מכיר את השאילתא, הוא יתן מיד את התשובה מבלי לפנות ל-DB.

עוד מנגנון מובנה ב WordPress הוא Transient API – באמצעותו ניתן לשמור נתונים לזמן מסוים בשביל שליפה מהירה שלהם. נתונים אלה יכולים להישמר ב DB שזה פחות טוב או יכולים בעזרת מנגנון Object Caching כמו Memcached להישמר בזיכרון.

Opcode Cache

כל סקריפט php שצריך לרוץ כחלק מהבקשה, צריך להתקמפל (תהליך שכולל את פרסור הקוד, בניית טוקנים ובניית AST ורק אז קמפול). ברגע שפעם אחת סקריפט כזה התקמפל הוא נשמר ב opcode cache ובפעם הבא שיצטרך לרוץ יהיה ניתן לקבל את הקוד המקומפל מהקאש.

בונוס קאש

אין באמת כזה קאש, הכוונה שניתן ליצור קאש מותאם לצרכים שלנו ע"י יצירת נקודת גישה לשרת (entry point) וקריאת נתונים משם. לא מכיר פלאגין לצורך זה אבל יש מאמר יפה של יאיר לוי שמתאר פתרון כזה. הטריגר שלו היה האיטיות שבשימוש המנגנונים של וורדפרס (AJAX API & REST API) לצרוך קבלת דאטה מהשרת.

סיכום

קאש הוא מנגנון חשוב מאוד בתוכנה באופן כללי ובמקרה שלנו בוורדפרס. ישנם כמה שכבות של קאש, כשכל שכבה יכולה להשלים את קודמתה. שימוש בקאש בכמה שכבות – דפדפן, CDN, שרת – יכול לעשות פלאים למהירות העליה של דפים באתר. תוסף קאש טוב לוורדפרס עוזר מאוד להגדיר את אופן פעולת הקאש. אך שימו לב שלא כל תוסף קאש עובד טוב עם כל web server ועם מנגנון קאש בשרת. אם אתם בתהליך החלטה על שימוש בתוסף קאש, בדקו גם את העניין הזה.

שיפור מהירות וביצועים של אתרים באינטרנט

מוזמנים להצטרף לקבוצת הפייסבוק היחידה בישראל העוסקת רק בשיפורי ביצועים

תוכן עניינים

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

הרשמה
Notify of
0 תגובות
Inline Feedbacks
הצג את כל התגובות

גם הפוסטים הבאים יעניינו אותך

0
אשמח לשמוע את דעתכם, מוזמנים להשאיר תגובהx