מאמר: מדוע הדף באתר לא מתעדכן ?

halemo

New member
מאמר: מדוע הדף באתר לא מתעדכן ?

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

Jenkins

New member
../images/Emo13.gif

אף פעם לא קרה לי.
 
משה ../images/Emo13.gif

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

איה@

New member
הלמו - אתה גדול ../images/Emo70.gif ../images/Emo45.gif

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

halemo

New member

havlaz

New member
או ש...

פשוט כאשר מרעננים, או מיד לאחר הכניסה לוחצים ctrl + f5 f5 מרענן את העמוד והוספת CTRL תגרום לדפדפן לקחת את הדף מהשרת, ולא מזכרון המטמון שלו.
 

halemo

New member
יפה חבל"ז ! את המקש הזה חיפשתי../images/Emo45.gif

מישהו לפניך טען שלחיצה על לחצן "רענן" ביחד עם מקש SHIFT עושה את זה, אבל לי זה לא הצליח משום מה... השיטה שלך Ctrl+F5 ממש מוצלחת !
זה מה שחיפשתי מזמן ! איה, לתשומת ליבך... (אולי כדאי להוסיף את זה למאמר ?)
 

havlaz

New member
אין בעיה

דרך אגב, מה שכתבת עליו זה באמת בעיה מקוללת
 

איה@

New member
עכשיו שהצלחתי ../images/Emo68.gif

ואני "מרועננת" ודנדשה
כן הלמו! - בוודאי, תוסיף פיסקה תגיד לי אפוא להדביק את זה ואל תשכח לתת קרדיט לחבל"ז
איה.
 

halemo

New member
תוסיפי את העצה של חבל"ז בסוף המאמר

עם השם שלו כמובן. תוסיפי משהו בסגנון הזה: עצה חשובה של havlaz: ניתן לרענן בצורה מלאה את דף האינטרנט שמגיע מהשרת בקלות ע"י צירוף הלחיצות על המקשים Ctrl+F5. הדפדפן (נבדר על אינטרנט אקספלורר של מיקרוסופט) פשוט יביא בצורה מלאה ללא התחשבות בזכרון המטמון שלו את כל הקבצים הרלוונטיים משרת הדפים באינטרנט.
 

איה@

New member
חבל"ז - קונטרול + F5 תקע לי ת´מחשב

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

havlaz

New member
נראה לי באמת

משהו בדפדפן תקוע
זה לא אמור לגרום לבעיות באיזה דפדפן את?
 

איה@

New member
טוב שרק הדפדפן........./images/Emo3.gif

אבל הבנתי את הבעיה. צריך לתת קליק עם העכבר על העמוד המבוקש. ואז זה עובד.
איה.
 

halemo

New member
הסבר טכני קצר על התופעה + דוגמה

אני מצרף קובץ טקסט שמורכב משני חלקים: חלק (1) שמציג את הבעייה: ~~~~~~~~~~~~~~~~~~~~~~~~~ הדפדפן שולח לשרת בקשה לקבלת דף והשרת נותן תשובה "304" שאומרת שהקובץ המבוקש לא השתנה, ועל הדפדפן להציג אותו מהזכרון מטמון שלו (cache memory). לאחר תשובה זו, מבקש הדפדפן את הדף הבא ("GET") חלק (2) שמציג את הפתרון - למשל לחיצה על ctrl+F5: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ הדפדפן שולח לשרת בקשה לקבלת דף והשרת נותן תשובה "200" שאומרת שהקובץ המבוקש נשלח ברגע זה לדפדפן, ועל הדפדפן להציג אותו כפי שהוא מתקבל. מייד לאחר מכן רואים את קוד ה HTML שנשלח...
 

genotip

New member
אתה לא מפסיק להפתיע ../images/Emo13.gif

הסבר מעולה, תודה
 
למעלה