מדוע דפדפן האינטרנט שלי לעיתים נכשל להציג את זמני ההורדה שנותרו?
לפעמים להוריד את הנאמן מד התקדמות בדפדפן שלך (או יישום אחר) רק זורק את ידיו באוויר ונותנת על הצגת זמן ההורדה הנותר. למה זה לפעמים מסמר את זמן ההורדה מוקרן ולפעמים נכשל לדווח על הכל ביחד?
מפגש השאלות והתשובות של היום מגיע אלינו באדיבות SuperUser - חלוקה מחודשת של Stack Exchange, קיבוץ מונחה על ידי הקהילה של אתרי אינטרנט של Q & A.
השאלה
קורא SuperUser Coldblackice רוצה לדעת למה הדפדפן שלו לא תמיד צלחת לכלוך:
מדי פעם, בעת הורדת קובץ בדפדפן אינטרנט, התקדמות ההורדה אינה "יודעת" את הגודל הכולל של הקובץ, או עד כמה הוא נמצא בהורדה - הוא רק מראה את המהירות שבה הוא מוריד, עם סך הכל כמו "לא ידוע".
למה לא הדפדפן יודע את הגודל הסופי של כמה קבצים? מאיפה זה מקבל את המידע הזה מלכתחילה?
איפה באמת?
התשובות
תורם SuperUser Gronostaj מציע את התובנה הבאה:
כדי לבקש מסמכים משרתי אינטרנט, דפדפנים משתמשים בפרוטוקול HTTP. ייתכן שתדע את השם מסרגל הכתובות שלך (ייתכן שהוא מוסתר כעת, אך כאשר תלחץ על סרגל הכתובות, העתק את כתובת האתר והדבק אותו בעורך טקסט כלשהו, תראה
http: //
בהתחלה). זה פשוט טקסט מבוסס פרוטוקול וזה עובד ככה:ראשית, הדפדפן שלך מתחבר לשרת האתר ושולח כתובת אתר של המסמך שהוא רוצה להוריד (דפי אינטרנט הם מסמכים, גם) ופרטים מסוימים על הדפדפן עצמו (User-Agent וכו '). לדוגמה, כדי לטעון את הדף הראשי באתר SuperUser,
http://superuser.com/
, הדפדפן שלי שולח בקשה שנראית כך:GST / HTTP / 1.1 Host: חיבור superuser.com: keep-life קבל: טקסט / HTML, יישום / xhtml + xml, יישום / xml, q = 0.9, * / *; q = 0.8 User-Agent: Mozilla / 5.0 ( Windows NT 6.1, WOW64) קבל קידוד: gzip, deflate, sdch קבל את השפה: pl-PL, pl, q = 0.8, en-US, q = 0.6, en; q = 0.4 קוקי: [הוסר עבור אבטחה] DNT : 1 אם-השתנה-מאז: יום שלישי, 09 יולי 2013 07:14:17 GMT
השורה הראשונה מציינת איזה מסמך יש להחזיר לשרת. השורות האחרות נקראות כותרות; הם נראים כך:
שם הכותרת: ערך כותרת
שורות אלה שולחות מידע נוסף המסייע לשרת להחליט מה לעשות.
אם הכל בסדר, השרת יגיב על ידי שליחת המסמך המבוקש. התגובה מתחילה עם הודעת מצב, ואחריו כמה כותרות (עם פרטים על המסמך) ולבסוף, אם הכל טוב, את תוכן המסמך. כך נראית תשובת השרת של SuperUser לבקשתי:
HTTP / 1.1 200 אישור מטמון שליטה: הציבור, מקסימום גיל = 60 תוכן-סוג: טקסט / html; הודעה פורסם: ב 'מרץ 15, 2010 6:43 am 07:26:19 GMT Content-Length: 139672 [... snip ...]
לאחר השורה האחרונה, השרת של SuperUser סוגר את החיבור.
השורה הראשונה (
HTTP / 1.1 200 אישור
) מכיל את קוד התגובה, במקרה זה200 בסדר
. משמעות הדבר היא כי השרת יחזיר מסמך, כנדרש. כאשר השרת אינו מצליח לעשות זאת, הקוד יהיה משהו אחר: כנראה ראית404 לא נמצא
, ואיסור 403
הוא די נפוץ, יותר מדי. לאחר מכן כותרות בצע.כאשר הדפדפן מוצא שורה ריקה בתגובה, הוא יודע שהכל מעבר לקו זה הוא תוכן המסמך המבוקש. אז במקרה זה
הוא השורה הראשונה בקוד דף הבית של SuperUser. אם הייתי מבקש מסמך להוריד, זה בטח יהיה כמה תווים gibberish, כי רוב פורמטים של מסמכים הם בלתי קריא ללא עיבוד מראש.
חזרה לכותרות. המעניין ביותר עבורנו הוא האחרון,
אורך תוכן
. הוא מודיע לדפדפן כמה בתים של נתונים עליו לצפות לאחר השורה הריקה, כך שבסופו של דבר הוא גודל המסמך המבוטא בבתים. כותרת זו אינה חובה וניתן להשמיט אותה על-ידי השרת. לפעמים גודל המסמך לא ניתן לחזות (למשל כאשר המסמך נוצר על לטוס), לפעמים מתכנתים עצלן לא לכלול את זה (די נפוץ באתרי הורדת הנהג), לפעמים אתרי אינטרנט נוצרים על ידי Newbies שאינם יודעים של כותרת כזו.בכל מקרה, תהיה הסיבה אשר תהיה, הכותרת יכולה להיות חסרה. במקרה זה הדפדפן לא יודע כמה נתונים השרת עומד לשלוח, ולכן מציג את גודל המסמך כמו לא ידוע, ממתין שהשרת יסגור את החיבור. וזו הסיבה לגודל מסמכים לא ידוע.
יש לך משהו להוסיף להסבר? נשמע את ההערות. רוצה לקרוא תשובות נוספות ממשתמשים אחרים בעלי ידע טכנולוגי מתמצא? בדוק את נושא הדיון המלא כאן.