מאמר: מדוע הדף באתר לא מתעדכן ?
מדוע הדף באתר לא מתעדכן ? תסכול מקוון ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ כמה פעמים קרה לכם שעדכנתם דף אינטרנט מקומי שנמצא על הדיסק שלכם, שלחתם אותו לשרת הקבצים ברשת אינטרנט, גלשתם לדף הרלוונטי ושום דבר לא קרה ולא התעדכן ? ברוכים הבאים לעולם התסכולים של בוני אתרים המעדכנים דפים באתר שלהם על בסיס יומי ואף לעיתים קרובות יותר, אפילו מספר פעמים ביממה, ומביטים בעיניים כלות ובהרגשה מתסכלת על האתר שלהם שלא התעדכן משום מה, למרות ששלחו את הדף המעודכן לשרת עשרות פעמים... הבעייה: ~~~~~~~~ בניתם אתר לתפארת, השקעתם בגרפיקה משובחת, בטקטסים חיוניים, בלינקים מעניינים ואת הכל ריכזתם בדף שבניתם בעזרת עורך דפי אינטרנט כלשהו או בצורה ידנית של כתיבה מייגעת של קוד HTML בלתי קריא. לאחר שהעלתם את הדף לשרת הקבצים באינטרנט, לשטח הדיסק שהוקצה לכם מבעוד מועד, גלשתם לאתר כדי לראות את השינויים, ראיתם, ופתאום נזכרתם ששכחתם להוסיף משהו לאותו דף: חסר לינק, חסר באנר, חסרה שורת טקסט כלשהי וכדומה. אתם שוב יושבים מול תוכנת העריכה, מתקנים את הדף, מוסיפים את הלינק החסר, את הטקסט שנשכח או את קובץ הגרפיקה הרצוי. אתם שוב מעלים את הדף המתוקן לשרת הקבצים, גולשים לאתר ולדף המתאים, ו...השינוי לא קיים ! הדף לא התעדכן ! מה קורה פה ? הסבר התופעה: ~~~~~~~~~~~~~ ובכן, מדובר בתופעת הפרשי הזמנים בין השעון המקומי שלכם במחשב לבין השעון המקומי במחשב השרת ובשימוש לא רצוני של זכרון המטמון של הדפדפן. כאשר דפדפן אינטרנט מודרני כלשהו שולח בקשה לקבלת דף, הוא שולח גם את התאריך ואת הזמן במחשב שלכם לשרת. כמו כן, כדי לעבוד ביעילות ולגרום לאתרים שביקרתם בהם לעלות מהר יותר, הוא גם מודיע לשרת הדפים שאם הדף לא עבר שינוי כלשהו על פי תאריך העדכון האחרון, אז שלא ישלח את הקובץ למחשב, אלא יודיע לדפדפן על כך, והדפדפן יחפש בזכרון המטמון שלו את הדף המבוקש או אלמנט כלשהו בדף המבוקש (למשל קובץ גרפי או קובץ קול), וכך המשתמש יגלוש ויעלה אתרים שביקר בהם די במהירות. אבל, הדבר יוצר בעייה עבור גולשים שמעדכנים את האתרים שלהם בדחיפות של פחות מיממה. המדובר בעיקר בדפי אינטרנט סטטיים בפורמט HTML ואינם קוד סקריפט כלשהו שנמצא בשרת כגון ASP, PHP וכדומה. דף סטטי אינו בונה את עצמו מחדש בכל גלישה בניגוד לדף שבנוי על שפת סקריפטים כלשהי אשר בונה את עצמו מחדש בכל פעם שמבקש אותו הדפדפן מן השרת. הפרש זמן בין שרת ברשת לבין מחשב מקומי יכול להגיע עד ל 10 שעות אם שני המחשבים נמצאים בקצוות שונים בעולם. בדרך כלל מתייחסים להפרשי זמן של עד כיממה כדי להצביע על עדכון בטוח של תוכן כלשהו באתר. תופעה זו מפריעה לכותבי דפים באתרים שמעדכנים את האתר, אך לא רואים את השינוי בצורה מיידית כאשר הם גולשים לאתר שלהם, ולא תמיד מבינים מדוע ולמה עדכון הדף לא בוצע. פתרון הבעיה: ~~~~~~~~~~~~~ ישנם מספר דרכים על מנת לאפשר עבודה נוחה לבוני אתרים סטטיים אשר מתעדכנים בהפרשי זמנים של פחות מיממה. הדרך הראשונה והלא רצוייה היא לנקות את זכרון המטמון של הדפדפן. הדבר יגרום למחיקת כל הקבצים הזמניים ששומר הדפדפן בספרייה מיוחדת שלו ומאפשרת לגלוש בצורה מהירה באתרים שכבר ביקרנו בהם. מחיקת כל הקבצים, תגרום לנו לגלוש בצורה הרבה פחות מהירה לאתרים שכבר ביקרנו בהם. הדרך האחרת, הטריקית משהו והרצוייה, היא לרמות את הדפדפן. כאשר הדפדפן מקבל בקשה מהמשתמש לקבל דף כלשהו, המשתמש נותן כתובת לדף כלשהו, אם ע"י הקלדת כתובת הדף לשורת הכתובת בדפדפן, ואם ע"י לחיצה על קישור (לינק) כלשהו בדף שבו הוא נמצא. לחיצה על הקישור או מתן כתובת דף לדפדפן גורמת לדפדפן לשלוח בקשה לקבלת דף לשרת הקבצים. בבקשה ששולח הדפדפן, הוא שולח נתונים נוספים כגון תאריך ושעה במחשב, בקשה לא לשלוח דף או קובץ חדש שהתאריך שלו בשרת לא גדול יותר מהתאריך שלו במחשב המשתמש (וכאן נוצר הפרש הזמנים) וכן נתונים נוספים. אבל, ניתן לשלוח כתובת או קישור לדף בשרת בצורה שהדפדפן והשרת יחשבו שחייבים לתת את הדף הפיזי הקיים בשרת בלי להתחשב בתאריכים. הדבר מתבצע ע"י שרשור פרמטרים פיקטיביים בסוף שורת הכתובת של הדף. כך הגולש מקבל דף מעודכן ביותר מכיוון שהשרת שולח את הדף האמיתי שקיים אצלו בשרת ואינו מתחשב בזכרון המטמון של הדפדפן. לדוגמה: בקשה לקבל דף בשם page.html בשרת www.mysite.com תיראה כך: http://www.mysite.com/page.html במידה וגלשנו ב 24 האחרונות לאותו דף, הדף שמור בזכרון המטמון של הדפדפן, ובכל בקשה לקבלת הדף הזה, לא נקבל אותו שוב מהשרת, אלא מזכרון המטמון של הדפדפן. אבל, נניח שעדכנו את הדף, שלחנו אותו לשרת ורצינו שוב לגלוש ולקבל את הדף על מנת לבחון את השינוי בשטח. מה יקרה ? מה שאנו עלולים לקבל אם יש הפרש זמנים בין השרת לבין המחשב המקומי שלנו הוא שנקבל את הדף שעדיין שמור בזכרון המטמון של הדפדפן ולא את הדף המעודכן. לבעיה זו יש מספר פתרונות, שהפשוט מביניהם הוא לתת את כתובת הדף בצורה כזו: http://www.mysite.com/page.html?sometexthere כתובת הדף מכילה את תו סימן השאלה שאומר לשרת שישנם פרמטרים ששייכים לדף שעלולים לשנות את מבנה הדף ולכן יש לקבל אותו כפי שהוא קיים באמת ולא מזכרון המטמון של המחשב שלנו. לאחר תו סימן השאלה, יבוא טקסט כלשהו שניתן אנו. רצוי לתת לאחר כל עדכון טקסט שונה, מכיוון שטקסט דומה לאחר תו סימן השאלה עלול לתת לנו שוב את הדף שקיים בזכרון המטמון של הדפדפן. למשל, לאחר עדכון שני, נבקש את הדף כך: http://www.mysite.com/page.html?blablabla במקרים מסויימים ניתן לשנות את זמן המחשב המקומי שלנו. ניתן לשנות את שעון המחשב שיצביע על יומיים לאחר הזמן המקורי, וכך הדפדפן ישלח לשרת תאריך שגוי, דבר שיגרום לשרת לשלוח את הקובץ האמיתי שנמצא בשרת. כמובן שלא לשכוח להחזיר את הזמן והתאריך הנכונים. הדבר לא תמיד עובד, מכיוון שדפדפן טוב שולח גם את התאריך והשעה של הקובץ המבוקש הקיים גם בזכרון המטמון, ואם התאריך והשעה של הקובץ השמור בזכרון המטמון של הדפדפן אינו נמוך יותר מהזמן של הקובץ הקיים בשרת, לא ישלח הקובץ מהשרת לדפדפן. אחת הדרכים שמשתמשים בה רבים היא הוספת שורת META בחלק ה HEAD של קובץ ה HTML. קיים תג META שמורה לדפדפן ולשרת על פקיעת תוקפו של הדף המבוקש בתאריך כלשהו. ניתן לתת תאריך מאוד ישן וכך, בכל פעם, הדף יהיה תמיד לא מעודכן ותמיד נקבל את הדף האמיתי שקיים בשרת. שיטה אחרת היא להורות לדפדפן באמצעות תג META נוסף על כך שהדפדפן לא ישמור את התכנים והאלמנטים שנמצאים בדף בזכרון המטמון שלו, אלא תמיד יבקש אותם מהשרת ברשת. החסרון בשיטה זו של שימוש בתגי META הוא שבגלישה אמיתית, הגלישה תהיה איטית יותר מכיוון שהדפדפן לא ינצל ביעילות את זכרון המטמון שלו לגלישה מהירה יותר. סיכום: ~~~~~~~ בוני אתרים אישיים המבוססים על דפים סטטיים (סיומת HTML או HTM) אשר מתעדכנים על בסיס יומי, כגון יומנים אישיים, בלוגים וכדומה, לא צריכים לעבור שוב את התסכול של אתר שלא התעדכן להם בגלל הפרשי זמנים בין השרת למחשב המקומי שלהם. נסו ותהנו...
מדוע הדף באתר לא מתעדכן ? תסכול מקוון ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ כמה פעמים קרה לכם שעדכנתם דף אינטרנט מקומי שנמצא על הדיסק שלכם, שלחתם אותו לשרת הקבצים ברשת אינטרנט, גלשתם לדף הרלוונטי ושום דבר לא קרה ולא התעדכן ? ברוכים הבאים לעולם התסכולים של בוני אתרים המעדכנים דפים באתר שלהם על בסיס יומי ואף לעיתים קרובות יותר, אפילו מספר פעמים ביממה, ומביטים בעיניים כלות ובהרגשה מתסכלת על האתר שלהם שלא התעדכן משום מה, למרות ששלחו את הדף המעודכן לשרת עשרות פעמים... הבעייה: ~~~~~~~~ בניתם אתר לתפארת, השקעתם בגרפיקה משובחת, בטקטסים חיוניים, בלינקים מעניינים ואת הכל ריכזתם בדף שבניתם בעזרת עורך דפי אינטרנט כלשהו או בצורה ידנית של כתיבה מייגעת של קוד HTML בלתי קריא. לאחר שהעלתם את הדף לשרת הקבצים באינטרנט, לשטח הדיסק שהוקצה לכם מבעוד מועד, גלשתם לאתר כדי לראות את השינויים, ראיתם, ופתאום נזכרתם ששכחתם להוסיף משהו לאותו דף: חסר לינק, חסר באנר, חסרה שורת טקסט כלשהי וכדומה. אתם שוב יושבים מול תוכנת העריכה, מתקנים את הדף, מוסיפים את הלינק החסר, את הטקסט שנשכח או את קובץ הגרפיקה הרצוי. אתם שוב מעלים את הדף המתוקן לשרת הקבצים, גולשים לאתר ולדף המתאים, ו...השינוי לא קיים ! הדף לא התעדכן ! מה קורה פה ? הסבר התופעה: ~~~~~~~~~~~~~ ובכן, מדובר בתופעת הפרשי הזמנים בין השעון המקומי שלכם במחשב לבין השעון המקומי במחשב השרת ובשימוש לא רצוני של זכרון המטמון של הדפדפן. כאשר דפדפן אינטרנט מודרני כלשהו שולח בקשה לקבלת דף, הוא שולח גם את התאריך ואת הזמן במחשב שלכם לשרת. כמו כן, כדי לעבוד ביעילות ולגרום לאתרים שביקרתם בהם לעלות מהר יותר, הוא גם מודיע לשרת הדפים שאם הדף לא עבר שינוי כלשהו על פי תאריך העדכון האחרון, אז שלא ישלח את הקובץ למחשב, אלא יודיע לדפדפן על כך, והדפדפן יחפש בזכרון המטמון שלו את הדף המבוקש או אלמנט כלשהו בדף המבוקש (למשל קובץ גרפי או קובץ קול), וכך המשתמש יגלוש ויעלה אתרים שביקר בהם די במהירות. אבל, הדבר יוצר בעייה עבור גולשים שמעדכנים את האתרים שלהם בדחיפות של פחות מיממה. המדובר בעיקר בדפי אינטרנט סטטיים בפורמט HTML ואינם קוד סקריפט כלשהו שנמצא בשרת כגון ASP, PHP וכדומה. דף סטטי אינו בונה את עצמו מחדש בכל גלישה בניגוד לדף שבנוי על שפת סקריפטים כלשהי אשר בונה את עצמו מחדש בכל פעם שמבקש אותו הדפדפן מן השרת. הפרש זמן בין שרת ברשת לבין מחשב מקומי יכול להגיע עד ל 10 שעות אם שני המחשבים נמצאים בקצוות שונים בעולם. בדרך כלל מתייחסים להפרשי זמן של עד כיממה כדי להצביע על עדכון בטוח של תוכן כלשהו באתר. תופעה זו מפריעה לכותבי דפים באתרים שמעדכנים את האתר, אך לא רואים את השינוי בצורה מיידית כאשר הם גולשים לאתר שלהם, ולא תמיד מבינים מדוע ולמה עדכון הדף לא בוצע. פתרון הבעיה: ~~~~~~~~~~~~~ ישנם מספר דרכים על מנת לאפשר עבודה נוחה לבוני אתרים סטטיים אשר מתעדכנים בהפרשי זמנים של פחות מיממה. הדרך הראשונה והלא רצוייה היא לנקות את זכרון המטמון של הדפדפן. הדבר יגרום למחיקת כל הקבצים הזמניים ששומר הדפדפן בספרייה מיוחדת שלו ומאפשרת לגלוש בצורה מהירה באתרים שכבר ביקרנו בהם. מחיקת כל הקבצים, תגרום לנו לגלוש בצורה הרבה פחות מהירה לאתרים שכבר ביקרנו בהם. הדרך האחרת, הטריקית משהו והרצוייה, היא לרמות את הדפדפן. כאשר הדפדפן מקבל בקשה מהמשתמש לקבל דף כלשהו, המשתמש נותן כתובת לדף כלשהו, אם ע"י הקלדת כתובת הדף לשורת הכתובת בדפדפן, ואם ע"י לחיצה על קישור (לינק) כלשהו בדף שבו הוא נמצא. לחיצה על הקישור או מתן כתובת דף לדפדפן גורמת לדפדפן לשלוח בקשה לקבלת דף לשרת הקבצים. בבקשה ששולח הדפדפן, הוא שולח נתונים נוספים כגון תאריך ושעה במחשב, בקשה לא לשלוח דף או קובץ חדש שהתאריך שלו בשרת לא גדול יותר מהתאריך שלו במחשב המשתמש (וכאן נוצר הפרש הזמנים) וכן נתונים נוספים. אבל, ניתן לשלוח כתובת או קישור לדף בשרת בצורה שהדפדפן והשרת יחשבו שחייבים לתת את הדף הפיזי הקיים בשרת בלי להתחשב בתאריכים. הדבר מתבצע ע"י שרשור פרמטרים פיקטיביים בסוף שורת הכתובת של הדף. כך הגולש מקבל דף מעודכן ביותר מכיוון שהשרת שולח את הדף האמיתי שקיים אצלו בשרת ואינו מתחשב בזכרון המטמון של הדפדפן. לדוגמה: בקשה לקבל דף בשם page.html בשרת www.mysite.com תיראה כך: http://www.mysite.com/page.html במידה וגלשנו ב 24 האחרונות לאותו דף, הדף שמור בזכרון המטמון של הדפדפן, ובכל בקשה לקבלת הדף הזה, לא נקבל אותו שוב מהשרת, אלא מזכרון המטמון של הדפדפן. אבל, נניח שעדכנו את הדף, שלחנו אותו לשרת ורצינו שוב לגלוש ולקבל את הדף על מנת לבחון את השינוי בשטח. מה יקרה ? מה שאנו עלולים לקבל אם יש הפרש זמנים בין השרת לבין המחשב המקומי שלנו הוא שנקבל את הדף שעדיין שמור בזכרון המטמון של הדפדפן ולא את הדף המעודכן. לבעיה זו יש מספר פתרונות, שהפשוט מביניהם הוא לתת את כתובת הדף בצורה כזו: http://www.mysite.com/page.html?sometexthere כתובת הדף מכילה את תו סימן השאלה שאומר לשרת שישנם פרמטרים ששייכים לדף שעלולים לשנות את מבנה הדף ולכן יש לקבל אותו כפי שהוא קיים באמת ולא מזכרון המטמון של המחשב שלנו. לאחר תו סימן השאלה, יבוא טקסט כלשהו שניתן אנו. רצוי לתת לאחר כל עדכון טקסט שונה, מכיוון שטקסט דומה לאחר תו סימן השאלה עלול לתת לנו שוב את הדף שקיים בזכרון המטמון של הדפדפן. למשל, לאחר עדכון שני, נבקש את הדף כך: http://www.mysite.com/page.html?blablabla במקרים מסויימים ניתן לשנות את זמן המחשב המקומי שלנו. ניתן לשנות את שעון המחשב שיצביע על יומיים לאחר הזמן המקורי, וכך הדפדפן ישלח לשרת תאריך שגוי, דבר שיגרום לשרת לשלוח את הקובץ האמיתי שנמצא בשרת. כמובן שלא לשכוח להחזיר את הזמן והתאריך הנכונים. הדבר לא תמיד עובד, מכיוון שדפדפן טוב שולח גם את התאריך והשעה של הקובץ המבוקש הקיים גם בזכרון המטמון, ואם התאריך והשעה של הקובץ השמור בזכרון המטמון של הדפדפן אינו נמוך יותר מהזמן של הקובץ הקיים בשרת, לא ישלח הקובץ מהשרת לדפדפן. אחת הדרכים שמשתמשים בה רבים היא הוספת שורת META בחלק ה HEAD של קובץ ה HTML. קיים תג META שמורה לדפדפן ולשרת על פקיעת תוקפו של הדף המבוקש בתאריך כלשהו. ניתן לתת תאריך מאוד ישן וכך, בכל פעם, הדף יהיה תמיד לא מעודכן ותמיד נקבל את הדף האמיתי שקיים בשרת. שיטה אחרת היא להורות לדפדפן באמצעות תג META נוסף על כך שהדפדפן לא ישמור את התכנים והאלמנטים שנמצאים בדף בזכרון המטמון שלו, אלא תמיד יבקש אותם מהשרת ברשת. החסרון בשיטה זו של שימוש בתגי META הוא שבגלישה אמיתית, הגלישה תהיה איטית יותר מכיוון שהדפדפן לא ינצל ביעילות את זכרון המטמון שלו לגלישה מהירה יותר. סיכום: ~~~~~~~ בוני אתרים אישיים המבוססים על דפים סטטיים (סיומת HTML או HTM) אשר מתעדכנים על בסיס יומי, כגון יומנים אישיים, בלוגים וכדומה, לא צריכים לעבור שוב את התסכול של אתר שלא התעדכן להם בגלל הפרשי זמנים בין השרת למחשב המקומי שלהם. נסו ותהנו...