אחת הבעיות של HTTP 1.0 הייתה הדרישה ל-connection נפרד עבור כל בקשה. כאשר נשלח דף
Web המכיל מספר רב של תמונות, מחלקות, יישומונים, משך
זמן הקמה של
ה-connections היוו
overhead גדול מאוד יחסית לזמן ההורדה עצמו. כדי לפתור בעיה זו רבים
מהדפדפנים תומכים בהרחבה
keep-alive. באמצעותה מודיע
השרת לדפדפן כמה בתים מכילה התגובה ומשאיר את הקשר פתוח למשך זמן מסוים לאחר החזרת
המסמך. הדפדפן מאבחן שהורדת המסמך הסתיימה על ידי מעקב אחר הבתים שנתקבלו ומשתמש
שוב באותו
ה-connection להמשך השידור. קשרים מתמידים
מסוג זה הפכו לסטנדרט HTTP 1.1 ושרתים התומכים בפרוטוקול
זה אמורים להשתמש בקשרים מתמידים אלא אם כן הלקוח הורה להם במפורש שלא לעשות כן (על ידי כותרת הבקשה "Connection:close").
Servlets יכולים לנצל קשרים מתמידים אלו.
השרת אמור לנהל את רוב התהליך, אולם אין לו דרך לקבוע את אורך המסמך המוחזר ולכן על
ה-Servlet להגדיר את כותרת התגובה
Content-Length.
ה-Servlet
יכול לקבוע את גודל המסמך המוחזר על ידי הצבת הפלט
ב-Buffer
על ידי ByteArrayOutputStream המחזיר את מספר הבתים
באמצעות ה-size method. את הפלט המוצב
ב-Buffer ניתן לשלוח ללקוח על ידי
ה-writeTo method .
השימוש בקשרים מתמידים ישתלם רק ל-Servlets
הטוענים מספר רב של אובייקטים קטנים הנוצרים על ידם. היתרון המושג משתנה משרת לשרת
ומדפדפן לדפדפן.
|