מה זה Cache (זכרון מטמון) ואילו סוגי Cache קיימים לוורדפרס?

בואו נדבר מעט על הרעיון והבסיס מאחורי 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 טרי ומנוהל היטב, קיים צורך מועט בסוגי הקאש הקודמים שציינתי.

לוח הבקרה של התוסף LiteSpeed Cache

לוח הבקרה של התוסף LiteSpeed Cache

Content Delivery Network (או CDN בקצרה)

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

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

לסיכום

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

רועי יוסף
רועי יוסף

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

0תגובות...

השאירו תגובה

 

Up!
לבלוג