Страница: 1 |
Страница: 1 |
Вопрос: Работа сервера при отдаче HTML
Добавлено: 01.10.07 21:01
Автор вопроса: Лёня
Написан небольшой сервачек на winsock который по RequestID разделяет подключения. С текстовой частью сервера все всегда Ок, а вот с подгрузками изображений на странице все несколько хуже. То есть при их запросе они отдaются, но ИНОГДА какая то из них кожет застопориться, размеры картинок небольшие - в пределах 100Кб. Если б не работало всегда - я б докопался сам - а тут видно с теорией что то у меня не так.
Заголовки при отдаче изображений правильные ... на вид вообще все чудесно работает. Да и ИНОГДА чаще всего бывает, когда страничку перезапрашиваешь, а не первая загрузка.
Пробывал Тягу-Сервер - та же проблема. И сейчас уже вспомнил как такое же было при обновлениях локальной html странички webbrowser'ом. Тогда я думал, что это с ним какой то косяк, раз картинки то есть то нет.
Если надо что то уточнить - тока скажите ...
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 01.10.07 22:04
Расшифруй термин "застопориться".
Номер ответа: 2
Автор ответа:
Лёня
Вопросов: 2
Ответов: 7
Профиль | | #2
Добавлено: 01.10.07 22:10
- это когда должна начаться прогрузка очередного изображения, а этого не происходит и загрузка страницы стопорится - причем картинка может быть любой из тех что на странице - и заголовок и обои и что то другое. Она не загружается на какой то процент, а просто не Приходит. При этом браузер ждет пока к нему таймаут не придет или рефрешь не ткнешь ...
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 02.10.07 22:32
Может в запросе размер файла не передаешь?
Номер ответа: 4
Автор ответа:
Лёня
Вопросов: 2
Ответов: 7
Профиль | | #4
Добавлено: 02.10.07 22:39
передаю как Format$(FileLen(FileName),"0"
да и обрываться мне думается он должен тогда в разных кусках ...
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 03.10.07 02:38
покажи сам запрос
Номер ответа: 6
Автор ответа:
Лёня
Вопросов: 2
Ответов: 7
Профиль | | #6
Добавлено: 03.10.07 02:53
Запрос браузера (Оперы), например, такой
____________________
GET /Sources/Titler.jpg HTTP/1.1
User-Agent: Opera/9.23 (Windows NT 5.1; U; ru)
Host: 127.0.0.1
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: http://127.0.0.1/
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers
____________________
ответ на него создается такой
"HTTP/1.0 200 OK" & vbCrLf & T & _
"Content-Length: " & Format$(Len(Page), "0" & vbCrLf & _
"Connection: close" & vbCrLf & vbCrLf & Page
где T в данном случаи "Content-Type: image/jpeg"
Page - содержимое файла картинки
Номер ответа: 7
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #7
Добавлено: 04.10.07 15:47
хз чесно говоря, негде протестировать... Могу прогу посоветовать для отслеживания запросов..
https://www.fiddler2.com/Fiddler2/version.asp
Сравни чтобы в твоей запрос был такое же...
Если он действительно такой же, то может быть проблема с считыванием картинки в Page. Может быть проблема с синхронностью винсоков, т.к. запросы опера отправляет не по порядку, а одновременно для страницы и картинок. А твоя прога при одновременных запросах может загоняется где..
Номер ответа: 8
Автор ответа:
Лёня
Вопросов: 2
Ответов: 7
Профиль | | #8
Добавлено: 05.10.07 00:28
Запрос проверил - был косячек с передачей Content-Type для html содержимого (Content-Type: text/html) в некоторых случаях. С изображениями тип передается всегда.
А вот про асинхронность сокетов у меня мысли были ... в моем представлении, каждый приход DataArrival(index) происходит в своем экземпляре Sub, а также создается по экземпляру всех функций к которым идет из него (Sub'a). Static и Public/Private переменных в этом месте не использую.
Вопросом по Теории пока является директива браузера Connection: Keep-Alive. То есть, после отсылки нужно ли делать Close сокету или соединение закроет браузер ?
Номер ответа: 9
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #9
Добавлено: 05.10.07 02:08
Ну Keep-Alive это типа оставить в живых Т.е. после запроса/ответа соединение не разрывается, и можно пихать ещё
Попробуй в ответе убери Connection: close...
Номер ответа: 10
Автор ответа:
Лёня
Вопросов: 2
Ответов: 7
Профиль | | #10
Добавлено: 05.10.07 02:18
Попробывал - "иногда" стало появляться почаще. Хотя и процент хорошего результата все еще присутствует.
Номер ответа: 11
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #11
Добавлено: 05.10.07 14:52
ну тогда незнаю.. выложи прогу что-ли где-то