רוב בעלי האתרים פוגשים את המושג Cache כשאיזה תוסף מבטיח אתר מהיר יותר בלחיצה אחת. בפועל, Cache הוא לא פיצ'ר בודד אלא שכבה של קיצורי דרך שעוזרת לדפדפן, לשרת ול-CDN לא לבצע שוב את אותה עבודה.
בפוסט זה נסביר מה עושה כל שכבת Cache, מתי היא עוזרת, ואילו שכבות באמת חשובות לסוגים שונים של אתרי וורדפרס.
מה זה Caching?
Caching הוא תהליך המאפשר לשמור עותק זמני של קבצים או נתונים כדי לאפשר גישה חוזרת אליהם באופן מהיר יותר. במקום לעבד כל בקשה מחדש, ניתן לעשות שימוש חוזר במידע שנשמר ובכך לשפר את הביצועים ולהפחית את העומס על השרת.
אתרי וורדפרס הם אתרים דינמיים – כל עמוד נבנה בזמן אמת באמצעות PHP ומסד נתונים כמו MySQL. כל טעינת עמוד מפעילה עשרות שאילתות למסד הנתונים עבור פוסטים, הגדרות, תפריטים ומטא-דאטה. תהליכים אלו יכולים להיות עתירי משאבים, ולכן Cache הוא מרכיב קריטי בשיפור מהירות ויעילות האתר.
סוגי ה-Cache הקיימים
Cache יכול להישמר על המכשיר של המשתמש עצמו (client-side), על השרת של האתר (server-side), או על שרתים מפוזרים ברחבי העולם באמצעות CDN (כלומר Content Delivery Network). אתרים מסוימים משתמשים בכל שיטות ה-Cache, בעוד שאחרים משתמשים רק בחלקן.
א. קאש צד לקוח – Client-side Caching
כל הדפדפנים המודרניים תומכים ב-client-side caching. הדפדפן של המשתמש יודע שקבצים מסוימים משתנים לעיתים רחוקות – קבצי CSS, קבצי JavaScript וקבצי תמונה יכולים להישמר מקומית ב-cache של הדפדפן, כך שתהיה לאלו גישה מהירה ללא הצורך להוריד אותם שוב מהשרת.
שליטה ב-client-side caching מתבצעת באמצעות HTTP headers. הנפוצים ביותר הם Cache-Control (שמגדיר כמה זמן לשמור משאב ב-cache), Expires (שקובע תאריך תפוגה מוחלט), ו-ETag (שמאפשר לדפדפן לבדוק אם קובץ שמור השתנה). הגדרה נכונה של headers אלו מבטיחה שמבקרים חוזרים יטענו את האתר מהר יותר באופן משמעותי.
כאשר מדובר ב-shared caches כמו CDN, יש גם הוראות נוספות שכדאי להכיר. למשל s-maxage מאפשר להגדיר זמן שמירה שונה עבור cache משותף, ו-stale-while-revalidate מאפשר להגיש עותק ישן לזמן קצר בזמן שהגרסה החדשה מתרעננת ברקע.
ב. קאש צד שרת – Server-side Caching
מרבית העבודה של יצירת והגשת עמודים מתבצעת בצד השרת, כך שהגיוני שרוב ההזדמנויות לשפר ביצועים גם כן יימצאו שם. קיימים ארבעה סוגים מרכזיים של Cache בצד השרת הזמינים לאתרי וורדפרס:
1. קאש של מסד הנתונים – Database Cache
Database cache חוסך זמן ומשאבים הקשורים להרצת שאילתות למסד הנתונים (database queries). וורדפרס מסתמכת על מסד הנתונים כדי לקבל מידע על האתר – תוכן, הגדרות, תפריטים ועוד – והיא מבקשת את אותו מידע שוב ושוב. Database cache שומר את תוצאות שאילתות אלו כך שניתן יהיה לגשת אליהן במהירות, ללא צורך לפנות למסד הנתונים בכל פעם מחדש.
כלים לדוגמה: Redis, Memcached (באמצעות תוספים כמו Redis Object Cache).
2. קאש של אובייקטים – Object Cache
לוורדפרס יש מנגנון מובנה של object caching, המאפשר לשמור אובייקטי נתונים הנדרשים במהלך בקשה. יש לציין ש-object cache אינו persistent כברירת מחדל – כלומר, הוא נבנה מחדש בכל טעינת עמוד, אלא אם מוסיפים backend חיצוני כמו Redis או Memcached.
Object cache שומר מידע הנדרש מספר פעמים במהלך אותה בקשה, ובכך חוסך חישובים יקרים. הוא גם שומר לעיתים שאילתות למסד הנתונים, וזו הסיבה שרבים מתבלבלים בינו לבין database cache.
מפתחים רבים משתמשים גם ב-Transients API לצורך מידע זמני. כאשר מופעל persistent object cache, הערכים האלו יכולים להישלף מה-object cache במקום לייצר עוד פנייה למסד הנתונים.
Object cache פועל ברמת האפליקציה והוא ספציפי לבקשה בודדת, אלא אם הפכתם אותו ל-persistent באמצעות Redis או Memcached. Database cache, לעומת זאת, שומר תוצאות שאילתות ספציפיות.
Persistent object cache משמעותי במיוחד באתרים שבהם חלקים גדולים מהחוויה אינם מתאימים ל-full-page caching.
אם ספק האחסון שלכם תומך ב-Redis או Memcached, הפעלת persistent object caching היא אחד השיפורים המשמעותיים ביותר שתוכלו לבצע – במיוחד באתרים עם WooCommerce, אזורי חברים, או תוכן דינמי אחר שלא ניתן לשמור ב-page cache.
3. OpCode Cache
OpCode cache חוסך זמן ומשאבים הקשורים להרצת קוד PHP. לפני שניתן להריץ קוד PHP, עליו לעבור קומפילציה ל-bytecode. OpCode cache (כמו OPcache) שומר את הקוד המקומפל בזיכרון השרת, כך שניתן להשתמש בו ללא צורך בקומפילציה מחדש.
OPcache זמין ברוב סביבות האחסון המודרניות, אך האם הוא פעיל תלוי בהגדרות ה-PHP של הספק. אם אתם מנהלים שרת משלכם, ודאו ש-OPcache מופעל – הוא מספק שיפור ביצועים משמעותי ללא חסרונות באתרי production. PHP 8.0 ומעלה כולל גם JIT (Just-In-Time compilation) כחלק מ-OPcache, אך עבור עומסי עבודה טיפוסיים של וורדפרס JIT לרוב לא ישפיע באופן מורגש. בדקו לפני שמפעילים.
שלושת סוגי הקאש הראשונים יחסכו משאבים לשרת, אך יהיה בהם צורך מועט לאחר שה-Page Cache ייצור עותק סטטי של העמודים.
4. קאש של עמודים – Page Cache
התוסף LiteSpeed Cache ו-WP-Rocket (למשל) נחשבים כ-Page Cache. כמו סוגי הקאש האחרים, גם page cache חוסך זמן ומשאבים – והוא עושה זאת על ידי שמירת התוכן המלא של עמודים שנבנו דינמית, כך שעותק "סטטי" של אותם עמודים הוא זה שמוגש לגולשים.
Page cache מאפשר לשרת לעקוף את כל תהליך ה-PHP והשאילתות למסד הנתונים. סוגי ה-cache האחרים יעזרו בתהליך הבנייה של אותם דפים סטטיים, אך ברגע שקיים page cache טרי ומנוהל היטב, הצורך בסוגי הקאש הקודמים פוחת משמעותית.
זהו סוג הקאש שמניב את שיפור הביצועים הגדול ביותר מבין כל הסוגים.
Content Delivery Network (או CDN בקצרה)
CDN שומר קבצים סטטיים (ולעיתים גם עמודים שלמים) על שרתים מפוזרים ברחבי העולם. גרסאות אלו זמינות למבקרים מהשרת הקרוב ביותר פיזית למיקומם, מה שמפחית את זמן ההשהיה ומשפר את המהירות.
CDN מצוין להפצת קבצים כמו תמונות, פונטים וקבצי JavaScript. שירותי CDN מסוימים (כמו Cloudflare APO או QUIC.cloud) יכולים גם לשמור עמודי HTML שלמים ב-edge, מה שמאפשר להגיש גם תוכן דינמי של וורדפרס ממיקום קרוב למבקר. עם זאת, טיפול בתוכן מותאם אישית (למשל למשתמשים מחוברים) דורש לרוב הגדרות מיוחדות.
CDN אידיאלי לתוכן סטטי. עבור תוכן דינמי או מותאם למשתמשים מחוברים בוורדפרס, השתמשו ב-CDN שתומך בכללי cache חכמים או edge logic.
Cache Invalidation – ניקוי קאש
אחד האתגרים ב-caching הוא לוודא שתוכן ישן לא מוגש למבקרים. Cache invalidation הוא התהליך של ניקוי או רענון ה-cache כאשר התוכן משתנה.
רוב תוספי ה-caching (כמו LiteSpeed Cache ו-WP Rocket) מנקים ומחדשים את ה-cache באופן אוטומטי כשאתם מעדכנים פוסטים, עמודים או הגדרות. ללא cache invalidation תקין, משתמשים עלולים לראות תוכן מיושן – ולכן חשוב להגדיר זאת נכון, במיוחד בעת שימוש באסטרטגיות caching אגרסיביות או CDN.
מה קורה בבקשה אמיתית?
הדרך הכי פשוטה להבין caching היא לעקוב אחרי שלושה ביקורים נפוצים:
- ביקור ראשון: אם עדיין אין page cache חם, וורדפרס צריכה לבנות את העמוד באמצעות PHP, שאילתות למסד הנתונים ו-object cache. לאחר מכן אפשר לשמור את התוצאה ב-page cache, ב-browser cache או ב-CDN.
- ביקור חוזר: קבצים סטטיים יכולים להגיע מה-browser cache, והעמוד עצמו יכול להגיע מ-page cache או משרת edge של CDN. התוצאה היא טעינה מהירה יותר והרבה פחות עבודה לשרת.
- ביקור של משתמש מחובר או תוכן מותאם אישית: עמודי cart, checkout, account או dashboard בדרך כלל לא מתאימים ל-full-page caching. במקרים כאלו object cache ו-OpCode cache הופכים לחשובים יותר, כי עדיין צריך לייצר את העמוד בצורה דינמית.
כיצד שכבות ה-Cache עובדות יחד
בפועל, סוגי ה-cache אינם מחליפים זה את זה – אתר וורדפרס מותאם היטב משתמש במספר שכבות במקביל:
- Browser cache מגיש למבקרים חוזרים קבצים מהאחסון המקומי באופן מיידי.
- CDN cache מפיץ קבצים סטטיים (ולעיתים עמודים שלמים) מהשרת הקרוב ביותר.
- Page cache מגיש קובץ HTML מוכן מראש, ללא צורך ב-PHP או שאילתות למסד הנתונים.
- OpCode cache מאיץ את הרצת ה-PHP כאשר יש צורך לייצר עמודים.
- Object ו-Database cache מפחיתים עומס שאילתות עבור בקשות דינמיות שלא ניתן לשמור ב-page cache.
כל שכבה תופסת את מה שהשכבה הקודמת לא כיסתה. למבט מעמיק יותר על טכניקות אופטימיזציה מעשיות, עיינו במדריך שלנו על שיפור מהירות הטעינה של אתרי וורדפרס.
לא כל אתר צריך את כל שכבות ה-cache. בלוג קטן ירוויח בעיקר מ-page caching ו-browser caching. אתרים עם תעבורה גבוהה או תוכן דינמי (WooCommerce, אזורי חברים, SaaS) צריכים להוסיף גם object caching ו-CDN.
איזה Cache עוזר למה?
אם רוצים כלל אצבע מהיר, אפשר להסתכל על זה כך:
- אתר תדמית או בלוג קטן: התחילו עם page cache, browser caching והפצה בסיסית של קבצים סטטיים דרך CDN.
- אתר תוכן עם קהל בינלאומי: הוסיפו CDN שמפיץ קבצים סטטיים בצורה אגרסיבית ומקטין השהיה למבקרים שרחוקים מהשרת.
- אתר WooCommerce, מועדון חברים או LMS: תנו עדיפות ל-persistent object cache ולהחרגות cache מסודרות עבור cart, checkout ו-account. אם אתם משתמשים ב-LiteSpeed, יש לנו מדריך מפורט להגדרת LiteSpeed Cache ל-WooCommerce.
טעויות Cache נפוצות
- לשמור הכל ב-cache: לא כדאי לבצע full-page caching לעמודי cart, checkout, account או אזורים מותאמים אישית, אלא אם אתם יודעים בדיוק איך ההחרגות עובדות.
- להפעיל כמה תוספי page cache במקביל: בדרך כלל שכבת page cache אחת מספיקה. שילוב של כמה תוספים יוצר לא מעט קונפליקטים ובעיות ניקוי cache.
- להתעלם מכללי purge: אם CDN או cache בצד השרת לא מתנקים בזמן שינוי תוכן, מבקרים ימשיכו לראות גרסה ישנה.
- לרדוף אחרי כל שכבה מוקדם מדי: בהרבה אתרים קטנים page cache יחד עם browser caching נותנים את רוב התוצאה. שכבות נוספות כדאי להוסיף רק כשבאמת יש בכך צורך.
אם אתם עובדים עם LiteSpeed Cache, פיצ'רים כמו Guest Mode יכולים לעזור גם בביקור הראשון שעדיין לא נהנה מ-cache מקומי.
שאלות נפוצות
שאלות נפוצות בנושא caching בוורדפרס:
לסיכום
Caching הוא אחת הדרכים היעילות ביותר לשפר את ביצועי אתר הוורדפרס שלכם. ברוב המקרים page cache ייתן את הקפיצה הבולטת ביותר, object cache יהיה משמעותי יותר באתרים דינמיים, ו-browser caching יחד עם CDN יחסכו עבודה חוזרת קרוב יותר למבקר.
המטרה היא לא להפעיל כל שכבת cache אפשרית. המטרה היא לבחור את השילוב הנכון לפי סוג האתר, רמת הדינמיות ותצורת האחסון שלכם.



Object cache pro שבא עם קלאודוויז ורוקט יכולים לעבוד ביחד?
כן, עובדים ביחד..