בואו נדבר מעט על הרעיון והבסיס מאחורי Caching באתרים. נתאר מה זה Cache (הנקרא בעברית זכרון מטמון או ״קאש״), נסביר מדוע הוא חיוני באתרי וורדפרס, ונראה אילו סוגי Cache קיימים לאתרים ואפליקציות web. נתחיל…
מה זה Caching?
באופן כללי, Caching זה מכניזם המאפשר לשמור מידע (data) באופן מסויים המאפשר גישה פשוטה ומהירה יותר לקבלת המידע מאשר קבלת המקור.
אתרי וורדפרס מכילים דפים דינמים הבנויים ב PHP. הדפים של אתר וורדפרס אינם קיימים בשום מקום במערכת הקבצים, אלא נוצרים לפי דרישה באמצעות PHP, ולאחר מכן מוגשים למשתמש כדפי HTML.
בתהליך זה ישנם מספר מקומות הדורשים לא מעט משאבים ובדיוק מקומות אלו אותו Caching נכנס לפעולה. בכדי להבין זאת עלינו להבין את סוגי מערכות הקאש השונות…
סוגי ה Cache הקיימים
Cache יכול להשמר על המכשיר או המחשב של המשתמש עצמו (client side), על השרת של האתר (server side), או אף בצד השני של העולם על ידי CDN (כלומר Content Delievery Network). אתרים מסויימים יכולים להשתמש בכל מתודות ה Cache שתארנו כשאחרים יכולים להשתמש רק בחלקן (או כלל לא).
א. קאש צד לקוח – Client-side Caching
כל הדפדפנים המודרנים תומכים ב client-side caching. הדפדפן של המשתמש יודע שקבצים מסויימים משתנים לעיתים רחוקות, למשל קבצי CSS, קבצי JavaScript וקבצי תמונה יכולים להשמר מקומית ב cache של הדפדפן, כך שתהיה לאלו גישה קלה ומהירה, וללא הצורך להוריד אלו שוב מהשרת.
ב. קאש צד שרת – Server-side Caching
מרבית העבודה של יצירת והגשת עמודים אינטרנטים מתבצעת על בצד השרת ועל ידי השרת, כך שהגיוני שרוב ההזדמניות לשפר יעילות גם כן יתרחשו בצד השרת. קיימים ארבעה סוגים מרכזיים של Cache בצד השרת הזמינים לאתרי וורדפרס:
1. קאש של מסד הנתונים – Database Cache
database cache חוסך זמן ומשאבים הקושרים להרצה של שאילתות למסד הנתונים (database queries). וורדפרס מסתמכת כל אותו מסד נתונים בכדי לקבל אינפורמציה על האתר (תוכן למשל), והיא מבקשת את אותו תוכן מדובר שוב ושוב ולעיתים תכופות. database cache שומר את תוצאות שאילתות אלו בשרת כך שניתן יהיה לגשת לאלו במהירות, וללא צורך לגשת למסד הנתונים בכל פעם מחדש.
2. קאש של אובייקטים – Object Cache
לוורדפרס יש מכניזם מובנה של object caching, כזה המאפשר להוסיף, לגשת, להסיר או לבצע מניפולציה על אותו object cache. יש לציין ש object cache אינו נשמר להרבה זמן, וכברירת מחדל הוא רלוונטי רק למשך בקשה יחידה.
הוא משמש לשמור מידע הנדרש מספר פעמים במהלך אותה בקשה, אך הוא גוזל זמן יקר של חישובים. object cache אף שומר לעתים שאילתות למסד הנתונים, וזו הסיבה שרבים מתבלבלים בינו לבין אותו database cache אותו הזכרנו בסעיף הקודם.
3. OpCode Cache
opcode cache חוסך זמן ומשאבים הקשורים להרצה של קוד PHP. לפני ניתן להריץ קוד PHP, עליו לעבור קומפילציה. opcode cache שומר את אותו קוד (לאחר הקומפילציה) ברמת השרת כך שניתן יהיה להשתמש בו ללא הצורך לבצע קומפילציה מחדש.
בפעם הבאה שתשלח בקשה להריץ את אותו קוד PHP מדובר, יהיה ניתן להשתמש בזה ללא הצורך בשלב הקומפילציה על ידי שימוש בקוד הנשמר ב opcode cache.
שלושת סוגי הקאש העליונים יחסכו משאבים לשרת אך יהיה בהם צורך מועט לאחר תהליך יצירת העתק סטטי של העמודים על ידי ה Page Cache בסעיף הבא.
4. קאש של עמודים – Page Cache
התוסף LiteSpeed Cache ו WP-Rocket (למשל) נחשבים כ Page Cache. כסוגי הקאש האחרים גם page cache חוסך זמן ומשאבים, והוא עושה זאת על ידי שמירת התוכן המלא של עמודים המיוצרים דינמית, כך שהעתק ״סטטי״ של אותם עמודים יהיה זה שמוגש לגולשים בעת הצורך.
page cache מאפשר לשרת ״לעקוף״ קליל את כל תהליך ה PHP והשאילתות למסד הנתונים. סוגי ה cache האחרים יהיו לעזר בתהליך הבנייה של אותם דפים סטטים שמייצר ה page cache, אך ברגע שכבר קיים page cache טרי ומנוהל היטב, קיים צורך מועט בסוגי הקאש הקודמים שציינתי.
Content Delivery Network (או CDN בקצרה)
CDN שומר גירסאות סטטיות של עמודי האתר בשרתים אחרים המפוזרים ברחבי העולם. גירסאות סטטיות אלו יהיו זמינות למבקרים באתר משרת כלשהו הנמצא פיזית הכי קרוב למיקום של אותו מבקר. ככל שהשרת קרוב יותר, יידרש פחות זמן להעביר את המידע, כלומר את אותן גרסאות סטטיות.
השימוש ב CDN הוא מעולה כשמדובר על אתרים סטטים, אך לוקה בחסר במערכות המייצרות עמודים דינמית כמו וורדפרס, וזאת כי הדרישה לתוכן מסויים עדיין צריכה לעבור בחצר האחורית של וורדפרס.
לסיכום
זה היה מבט כללי על מערכות caching. בנקודה זו, כנראה ואתם מבינים את סוגי הקאש השונים שזמינים לאתרים ולאפליקציות web, וייתכן ואף תרצו להשתמש באלו. אם אתם בעניין, שרת האחסון שאני מציע לאתרי וורדפרס יספק לכם את כל ארבעת סוגי ה Cache השונים באופן מובנה, כך שלא תאלצו להתעסק יותר בענייני קאש מבחינה זו.
Object cache pro שבא עם קלאודוויז ורוקט יכולים לעבוד ביחד?
כן, עובדים ביחד..