Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

О запросах браузера и ответах Web-сервера. [D5, WinME]


Страницы:   1 2

SergP ©   (2003-08-16 17:30:00) 

1.Конекчусь браузером через мой прокси. Браузер посылает запрос.
Далее к серверу запрос передается с помощью TClientSocket.
Сервер посылает ответ в виде нескольких пакетов. В первом находится заголовок (ну бывает и немного лишнего кроме заголовка).
Далее существуют такие ситуации, когда браузер по существующему незакрытому соединению посылает следующий запрос.

Вопрос: Второй и последующие запросы браузер посылает после того как были получены все пакеты от предыдущего запроса или может посылать когда еще не все пакеты получены?

2. получаю от сервера первый пакет ответа от сервера:
----------------------------------------
HTTP/1.0 200 OK
Server: Mathopd/1.4b12
Date: Sat, 16 Aug 2003 06:25:13 GMT
Expires: Fri, 14 Nov 2003 06:25:13 GMT
Content-Type: image/jpeg
Content-Length: 8927
Last-Modified: Thu, 15 May 2003 07:30:56 GMT
Age: 24518
X-Cache: HIT from great.kw.ukrtel.net
Proxy-Connection: keep-alive

яШяа
--------------------------------
Определяю размер,дату и время последней модификации. Ищу файл в кеше и сравниваю эти данные. Если данные совпадают, я закрываю соединение. Уменьшается ли при этом трафик. Т.е. после закрытия TClientSocket"а сервер остальные данные передавать не будет или будет передавать пока не передаст полностью несмотря на то что я их уже не собираюсь принимать?


Palladin   (2003-08-17 23:14:00) [21]


> Polevi © (17.08.03 20:59) [7]

Не скажи... Если бы было так, понятия времени-ожидания (timeout) не вводили бы... всегда может случится физический разрыв... да и много может чего случится...


SergP   (2003-08-17 21:51:00) [22]


> Anatoly Podgoretsky © (17.08.03 21:13) [8]
> SergP © (17.08.03 12:00) [6]
> Нет особого смысла заказывать все, закажи только заголовок


Если я закажу заголовок (как я понял нужно поменять метод GET на HEAD), то если окажется что в кеше нет нужного, то мне после этого снова придется заказывать все методом GET (снова лишний трафик).

Но вроде бы Poveli меня убедил.


Anatoly Podgoretsky   (2003-08-17 21:13:00) [23]

SergP © (17.08.03 12:00) [6]
Нет особого смысла заказывать все, закажи только заголовок


Polevi   (2003-08-17 20:59:00) [24]

TCP протокол с гарантированной доставкой, создается виртуальный канал, если одна из сторон оборвет его, отправляющая узнает об этом


SergP   (2003-08-17 12:00:00) [25]


> app © (17.08.03 11:47) [5]
> Last-Modified: Sun, 22 Dec 2002 02:16:39 GMT


Я видно некорректно задал вопрос.
Смысл в том что подаю запрос хосту. Хост мне передает ответ в виде нескольких пакетов. В первом из них заголовок. Так я разбираю заголовок, и если Last-Modified совпадает со значением из кеша, то беру данные из кеша, а соединение обрываю, т.е. не принимаю остальные пакеты. Но после обрыва соединения (Tclientsocket.socket.close) будут ли передаваться остальные пакеты ответа сервера? Или сервер тоже прекратит передачу данных. Если нет, то как это все можно покоректнее сделать (чтобы я не получал ненужных мне данных, которые комп все равно будет игнорировать)? просто мне не нужен всякий мусор в трафике.


app   (2003-08-17 11:47:00) [26]

Last-Modified: Sun, 22 Dec 2002 02:16:39 GMT


SergP   (2003-08-17 10:43:00) [27]

Вот что сервер выдаетдля статической страницы:

HTTP/1.0 200 OK
Date: Fri, 15 Aug 2003 16:29:41 GMT
Server: CERN httpd 3.0B (VAX VMS)
Last-Modified: Sun, 22 Dec 2002 02:16:39 GMT
ETag: "eed099-46db-3e052087-windows-1251"
Content-Length: 18478
Content-Type: text/html; charset=windows-1251
Age: 137056
X-Cache: HIT from great.kw.ukrtel.net
Proxy-Connection: keep-alive

Здесь нет Expires. Значит я так понял если этот файл есть в кеше, но у него нет expires то нужно проверить обновление...
А все таки как лучше проверить обновление, чтобы после получения заголовка можно было бы принять решение либо о дальнейшей загрузке файла, либо о доставании его из кеша, и соответственно пи этом о закрытии соединения, но чтобы при этом я не получал ничего ненужного от сервера? (преследуется цель максимальной экономии трафика, и в то же время актуальности данных доставаемых из кеша)


nikkie   (2003-08-17 01:56:00) [28]

1. expire - закончиться, истечь (о сроках)
дата после которой ожидается, что запрошенный документ может измениться.

я только подумал - не уверен, что хороший совет тебе дал. надо поэкспериментировать, что будет сервер возвращать для статических страниц...

2. точно сказать не могу. наверное, зависит от размеров системных буферов на чтение/запись. вероятно если файл не совсем маленький, то трафик будет меньше.


SergP   (2003-08-16 18:48:00) [29]

1. А что такое Expires. Что там за дата указана?

2. И как насчет остального: Правильно я думаю или ошибаюсь?


nikkie   (2003-08-16 18:07:00) [30]

имхо тебе надо сначала смотреть свой кеш - и смотреть на поле Expires. если момент Expires еще не прошел - возвращаешь файл из кеша, в противном случае - открывать ClientSocket. разумеется к кешу обращаться только если в запросе от браузера не было параметра no-cache.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо