
הטקסט המלא של הדקות הראשונות בהרצאה «שימוש ב-Cache - חלק 2» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז אנחנו הולכים כרגע להשתמש ב-cash בכדי לשמור בתוכו views שלקוח גלש אליו. מה זאת אומרת? כאשר לקוח גולש לאיזשהו view, הרי אנחנו ראינו שיש את שפת ה-razor שמתבצעת ואולי יש איזשהו action שפועל, כלומר כמובן שיש איזשהו action שפועל ברקע, וטוען מידע מדאטאבייס ומייצר בפועל את אותו view.
כל הדבר הזה יכול לקחת זמן, אבל בואו נחשוב, מה קורה אם לקוח אחד מאיטליה גולש לנו לאתר ורוצה לראות רשימת מוצרים? אז הוא גולש ל-controller products, ל-action index, ורואה את הרשימה.
ולקוח אחר שנמצא בכלל באזור אחר בעולם גם גולש לאותו דף שלנו, אז מן הראוי להציג לו את אותה רשימת מוצרים. אז יכול להיות שהרשימת מוצרים הזאת, עדיין שמנו אותה ב-cash ויכול להיות שלא, אבל למה לייצר את ה-view פעמיים?
אנחנו יכולים לייצר את ה-view פעם אחת ולתת אותו גם ללקוח הראשון וגם ללקוח השני. הדבר הזה עוד יותר מייעל לנו את האתר, את הגלישה לאתר, כלומר היצור עצמו של הדף html שבסופו של דבר נוצר בצד השרת ומוחזר ללקוח, הדף עצמו כ- html טהור יכול להישמר בצד של השרת והבן אדם השני השלישי וכולי שמבקשים את אותו הדף בדיוק אנחנו לא צריכים עוד פעם לייצר להם את הדף אנחנו לא צריכים עוד פעם
להריץ להם את האקשן לפנות לדייטאבייס או לעשות כל פעולה אחרת, אלא פשוט מביאים להם את התוצאה שכבר יצרנו עבור לקוח אחר. זה מייעל בצורה מאוד מאוד משמעותית את הגלישה לשרת.
אז בואו נראה איך עושים את זה. בואו ניגש לקונטרולר שיש לנו, ויש לנו פה את פונקציית אינדקס. ומה שאנחנו נעשה בתוך פונקציית אינדקס זה לצורך הבדיקה ניקח view bag ונגדיר כאן איזושהי מסאג' ונרשום Page Rendered at ונרשום בדיוק את הזמן שבו הקונטרולר יצר את הדף הזה.
יש לנו פה DayTime.NowTooLongTimeStream את הדבר הזה אנחנו הולכים לשלב ב-View. בואו נלך ל-GoToView וכאן מה שאנחנו נעשה זה פשוט נרשום את המסאג' שהאקשן יצר.
ViewBagMessage אוקיי בואו נגלוש לדף הזה ונראה שכרגע הפייג' רנדרד את 5.42.07 מעולה בואו נלחץ enter ואנחנו נראה שעוד פעם איך שגלשנו עכשיו עברו כמה שניות והמספר השניות זה 20 בואו נלחץ עוד פעם enter אנחנו רואים 29 enter 32 זאת אומרת כל פעם שאנחנו גולשים לדף הזה אז הוא נוצר מחדש אם היה גלישה לדאטאבייס אם היה שימוש בדאטאבייס אז עוד פעם היינו
ניגשים לדאטה בייס, זאת אומרת שזו הוכחה שכל פעם שאנחנו גולשים לאקשן שנקראת אינדקס בקונטרולר פרודקטס האקשן הזאת פשוט מתבצעת ומייצרת לנו מחדש את ה-view.
עכשיו אם אנחנו לא רוצים שהדבר הזה יתבצע שוב ושוב אנחנו רוצים פשוט מאוד להגיד דבר כזה לקוח ראשון שגולש לאתר שלנו מאיפשהו בעולם פעם ראשונה הוא גלש לאינדקס הדף לא היה קיים בבקשה תיצור אותו פעם שנייה שלקוח גולש הדף הזה אם הוא לא תלוי בלקוח כמובן אנחנו לא רוצים שהוא ייווצר עוד פעם אנחנו רוצים שהפונקציה אינדקס לא תתבצע בכלל
ואוטומטית יחזור ה-view הקודם שכבר נוצר לפני זה ושירת את הלקוח הראשון אנחנו אותו רוצים להחזיר ללקוח השני שכרגע ה-view הזה כבר שמור בשרת.
כמובן שאם אנחנו רוצים לעשות דבר כזה זה לא הגיוני להשאיר לנצח את הדף בצד של השרת מפני שלקוח ראשון גולש לדף, כל הלקוחות האחרים מעכשיו ועד הנצח יראו את אותו הדף שלקוח הראשון גלש.
אם לקוח הראשון הראה לנו לדוגמה רשימת מוצרים, לעולם לא יראו רשימה מעודכנת יותר. לכן אם אנחנו משתמשים בטריק הזה, אז אנחנו צריכים להגדיר מספר שניות שבו אנחנו רוצים לשמור את הדף בצד של השרת.
כעבור מספר השניות האלה הדף יימחק ולקוחות חדשים ייצרו דף חדש ומעודכן יותר.