The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Разрыв keep-alive сервером., !*! Jassmin, 13-Май-09, 09:07  [смотреть все]
Здравствуйте все!
Кто-нибудь знает, как должны действовать клиенты, при разрыве соединения сервером после заявленного Connection: keep-alive.
В спецификации я не нашла ни чего об этом :-(
Там говорится, что можно разрывать соединение вместо 503 Service Unavailable
У меня как раз такая ситуация. При подключении клиента делаю сначала fork, а потом chroot. Причём, chroot разный в зависимости от запроса. И иногда не могу достать нужный файл (как правило картина на странице). Их клиент почти всегда просит через то же соединение, что и саму страницу.
Вариант - поменять структуру директорий, продублировать файлы везде где надо - не подходит. Я уже думала об этом, файлы необходимо оставить как есть. И chroot в вышестоящую директорию нельзя :-(
После экспериментов с конкерором (больше ни чего нет), я поняла:
503 - картинки не грузятся
разрыв соединения - грузятся, но иногда дважды! (есть трафик с полными телами файлов)
Когда картинок на странице много, браузер сразу создаёт несколько соединений, и при неудачной попытке загрузить файл, видимо пробует в других существующих соединениях и создаёт новое.
Как избавиться от дублирующих загрузок?
И не противоречил ли вообще всё это спецификации?
  • Разрыв keep-alive сервером., !*! Sarge, 09:47 , 13-Май-09 (1)
    • Разрыв keep-alive сервером., !*! Jassmin, 10:13 , 13-Май-09 (2)
      >http://www.lib.ru/WEBMASTER/rfc2068/section-8.html#p1-2-1

      Можно, конечно, всегда закрывать соединение, но у меня в 99,9% случаев всё передаётся сразу.
      Я же писала:
      >И иногда не могу достать нужный файл

      • Разрыв keep-alive сервером., !*! Sarge, 11:19 , 13-Май-09 (3)
        Либо меняйте архитектуру сайта/сервера, либо всегда закрывайте соединение.

        Можно ещё попробовать выдавать редирект в таких случаях. Если есть фронтенд типа nginx, то можно даже внутренний редирект выдать (см. X-Accel-Redirect), или в своём приложении реализовать что-то подобное.

        • Разрыв keep-alive сервером., !*! Jassmin, 15:54 , 13-Май-09 (4)
          Проверка показала, что: IE7, Opera, Firefox и Konqueror нормально (не считая странных дублирующих загрузок) работают с разрывом соединения.
          Спецификация, вроде, тоже не против 503 как-никак.

          >Можно ещё попробовать выдавать редирект в таких случаях.

          А какой? (301, 302, 303, 307)
          Редирект URL на самого себя - это нормально?
          И редирект, ведь отключается в настройках и в теории не всегда автоматический.

          *вот надоест мне всё, сделаю много варианотов с разными редиректами и без них, и скормлю всё тестерам заказчика...

          • Разрыв keep-alive сервером., !*! Sarge, 19:53 , 13-Май-09 (5)
            >Проверка показала, что: IE7, Opera, Firefox и Konqueror нормально (не считая странных
            >дублирующих загрузок) работают с разрывом соединения.
            >Спецификация, вроде, тоже не против 503 как-никак.

            а где вы кстати прочитали что разрыв соединения равен ошибке 503? Я такого не припомню в rfc2616. ИМХО разрыв соединения это нештатная ситуация.

            >>Можно ещё попробовать выдавать редирект в таких случаях.
            >
            >А какой? (301, 302, 303, 307)
            >Редирект URL на самого себя - это нормально?

            не знаю, пробуйте. В крайнем случае можно сделать редирект на себя + случайный параметр в гет (типа Location: http://site.ru/img.gif?redirect=curtime)

            >И редирект, ведь отключается в настройках и в теории не всегда автоматический.

            в теории - да, а на практике слишком широко используется чтобы его отключать в штатном режиме веб-серфинга.

            >*вот надоест мне всё, сделаю много варианотов с разными редиректами и без
            >них, и скормлю всё тестерам заказчика...

            а самому делать запрос в режиме прокси к другому чайлду не катит?

            • Разрыв keep-alive сервером., !*! Jassmin, 20:55 , 13-Май-09 (6)
              >а где вы кстати прочитали что разрыв соединения равен ошибке 503? Я
              >такого не припомню в rfc2616. ИМХО разрыв соединения это нештатная ситуация.

              Наоборот 503 = разрыв соединения. Ну и то и другое - нештатная ситуация.
                    Note: The existence of the 503 status code does not imply that a
                    server must use it when becoming overloaded. Some servers may wish
                    to simply refuse the connection.

              >в теории - да, а на практике слишком широко используется чтобы его
              >отключать в штатном режиме веб-серфинга.

              А я-то хотела сделать всё по науке...
              Видимо придётся ограничиться практикой.

              >а самому делать запрос в режиме прокси к другому чайлду не катит?

              Не элегантно, муторно, ресурсы тратит, подменяет IP, зато клиента не трогает - хорошая идея!

              Итог: так и не ясно, что должны делать клиенты при разрыве соединения, но ясно, что они делают.
              Sarge ,благодарю за советы.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру