14Sep

מדוע דפדפן האינטרנט שלי לעיתים נכשל להציג את זמני ההורדה שנותרו?

click fraud protection

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

השאלה של היום &מפגש תשובה מגיע אלינו באדיבות SuperUser - חלוקה של סטאק שערי, קהילה מונחה קיבוץ של Q & אתרי אינטרנט.

השאלה

קורא הקורא Coldblackice רוצה לדעת למה הדפדפן שלו לא תמיד צולל את הלכלוך:

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

למה הדפדפן לא ידע את הגודל הסופי של כמה קבצים?מאיפה הוא מקבל את המידע הזה מלכתחילה?

איפה באמת?

תשובה

תורם SuperUser Gronostaj מציע את התובנה הבאה:

כדי לבקש מסמכים משרתי אינטרנט, דפדפנים להשתמש בפרוטוקול HTTP.ייתכן שתדע את השם הזה מסרגל הכתובות שלך( ייתכן שהוא מוסתר כעת, אך כאשר תלחץ על שורת הכתובת, העתק את כתובת האתר והדבק אותה בעורך טקסט כלשהו, ​​תראה את http: // בהתחלה).זה פשוט טקסט מבוסס פרוטוקול וזה עובד ככה:

instagram viewer

ראשית, הדפדפן שלך מתחבר לשרת של האתר ושולח כתובת האתר של המסמך שהוא רוצה להוריד( דפי אינטרנט הם מסמכים, גם) וכמה פרטים על הדפדפן עצמו( סוכן משתמש וכו ').לדוגמה, כדי לטעון את הדף הראשי באתר SuperUser, http: //superuser.com/, הדפדפן שלי שולח בקשה שנראה כך:

GET / HTTP / 1.1 Host: חיבור superuser.com: keep-life קבל: טקסט / HTML, יישום/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 משתמש-סוכן: Mozilla / 5.0( Windows NT 6.1; WOW64) קבל קידוד: gzip, deflate, sdch Accept-Language: pl-PL, = q = 0.8, en-US, q = 0.6, en; q = 0.4 קוקי: [הוסר עבור אבטחה] DNT: 1 אם-השתנה-מאז: יום שלישי, 09 יולי 2013 07:14:17 GMT

line מציין איזה מסמך יש להחזיר לשרת.השורות האחרות נקראות כותרות;הם נראים כך:

שם הכותרת: ערך כותרת

שורות אלה שולחות מידע נוסף המסייע לשרת להחליט מה לעשות.

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

HTTP / 1.1 200 אישור מטמון-בקרה: ציבורי, מקסימלי גיל = 60 תוכן-סוג: טקסט / html;הודעה פורסם: ב 'מרץ 15, 2010 6:43 am07:26:19 GMT Content-Length: 139672 & lt;! DOCTYPE html & gt;& lt; html & gt;[... snip. ..] & lt; / html & gt;

לאחר השורה האחרונה, השרת של SuperUser סוגר את החיבור.

השורה הראשונה( HTTP / 1.1 200 אישור) מכיל את קוד התגובה, במקרה זה זה 200 אישור.משמעות הדבר היא כי השרת יחזיר מסמך, כנדרש.כאשר השרת לא מצליח לעשות זאת, הקוד יהיה משהו אחר: אתה כנראה ראית 404 לא נמצא, ו 403 אסור גם הוא נפוץ למדי.לאחר מכן כותרות בצע.

כאשר הדפדפן מוצא שורה ריקה בתגובה, הוא יודע שהכל מעבר לקו זה הוא תוכן המסמך המבוקש.אז במקרה זה & lt;! DOCTYPE html & gt;הוא השורה הראשונה בקוד דף הבית של SuperUser.אם הייתי מבקש מסמך להוריד, זה בטח יהיה כמה תווים gibberish, כי רוב פורמטים של מסמכים הם בלתי קריא ללא עיבוד מוקדם.

חזרה לכותרות.המעניין ביותר עבורנו הוא האחרון, Content-Length.הוא מודיע לדפדפן כמה בתים של נתונים עליו לצפות לאחר השורה הריקה, כך שבסופו של דבר גודל המסמך מבוטא בבתים.כותרת זו אינה חובה וניתן להשמיט אותה על-ידי השרת.לפעמים גודל המסמך לא ניתן לחזות( למשל כאשר המסמך נוצר על לטוס), לפעמים מתכנתים עצלן לא לכלול את זה( די נפוץ באתרי הורדת הנהג), לפעמים אתרי אינטרנט נוצרים על ידי Newbies שאינם יודעיםשל כותרת כזו.

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

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