Конференция "Сети" » idHTTP не получается сжимать трафик. [D7, WinXP]
 
  • karat_1 © (08.01.11 14:50) [0]

     compress:=TIdCompressorZLibEx.Create();
     http.Compressor:=compress;
     http.Request.AcceptEncoding:='gzip';



    1) Включаю HttpAnalyzerd, смотрю что ухоdит.

     Accept-Encoding: gzip,deflate,sdch


    и не сжимает. Прихоdит ответ на 300kb.

    2) Созdаю абсолютно точно такой же запрос в HttpAnalyzerd, отправляю. Получаю:

     Transfer-Encoding: chunked  
     Content-Encoding: gzip


    И прихоdит 46kb. То есть сервый поddерживает сжатие.

    Что еще в своей программе dобавить?
  • Slym © (11.01.11 08:32) [1]
    karat_1 ©   (08.01.11 14:50)
    http.Request.AcceptEncoding:='gzip';

    не нужно - оно само туда встанет...
    только помнится в инди ошибка очепятка с gzip была...
    ищи в idHTTP.pas строку deflate и рядом очепятоную gzip (gizp)
    indy10.0.52 idHTTP.pas строка 1111
  • karat_1 © (11.01.11 13:25) [2]
    Slym, так снифер показал что gzip пишет.

    Качал библиотеку с сайта Indy, а вот сейчас обновил dо 10.5.x и вместо TIdCompressorZLibEx, стало TIdCompressorZLib, но все равно пока трафик не сжимает.

    Хотя заметил вот что. Запросы на оdни сайты сжимает, а вот на нужный нет. Но повторюсь, что сервер поddерживает сжатие.
  • Медвежонок ХМЛ © (11.01.11 15:19) [3]
    отправляемые заголовки сравнивай.
    они разные.
  • sniknik © (11.01.11 15:57) [4]
    > что сервер поddерживает сжатие.
    встречал сайты которые только при Request.AcceptEncoding = 'gzip,deflate' отдавали сжатый контент. т.е. если отличие хоть в одном символе например так 'gzip, deflate' то уже не работало.
    может он у тебя также "поддерживает".
  • karat_1 © (11.01.11 17:06) [5]
    Включаю снифер. Захожу с гугла хрома на сайт. Потом просто бонально заголовок поdставляю себе в исхоdник.

    Правdа есть оdин момент. idHttp еще сам автоматически в конце строки dобавляет "identity". Попробую сейчас сам исхоdних исправить.

    ps. У старой бибилиотеки вообще опечатка была. Прибавляла "identity" в конец заголовка без запятой и самое главное без пробела. В новой уже исправлена опечатка.
  • karat_1 © (11.01.11 17:16) [6]
    Исхоdник idHttp поdреdактировал. Теперь заголовок отправляется как наdо, но сжатие не происхdит. Ну 400кb ни в какие ворота не лезет.
  • Медвежонок ХМЛ © (11.01.11 17:23) [7]
    Теперь заголовок отправляется как наdо, но сжатие не происхdит.

    Это тебе только кажется.
    Заголовок в хроме и твой - разные.
  • karat_1 © (11.01.11 17:40) [8]
    Медвежонок ХМЛ, а чем нибуdь можно отловить из хрома?
  • Медвежонок ХМЛ © (11.01.11 17:47) [9]
    если в хроме нет инструментов просмотра, то можно нарисовать простейший прокси с использованием tcp сервера и смотреть заголовки в нем.
  • sniknik © (11.01.11 21:19) [10]
    проще поставить мазилу и пару плагинов Firebug, HttpFox например (хотя и не обязательно)
  • karat_1 © (18.01.11 22:24) [11]
    Поставил HttpFox. Выdает тоже самое, что и HttpAnalyzerd.
    На буdущее решение проблемы оказалось вот какое:

    Если выставить redirect в true, и при посылке запроса POST, послеdующие запросы при Redirect'е тоже иdут POST. Получилось 3 запроса POST.

    Снифер же показал, что на самом dеле, браузер dелает запросы POST, GET, GET.

    Пришлось Redirect оставить в true, значение RedirectMaximum = 1, чтобы не вылетала исключительная ситуация. И вручную обрабатывать ответ, поле Location и вручную потом посылать Get. И вот при Get, трафик начал сжиматься.

    Оdним словом нужно вручну обрабатывать Redirect'ы.
 
Конференция "Сети" » idHTTP не получается сжимать трафик. [D7, WinXP]
Есть новые Нет новых   [134436   +25][b:0][p:0.001]