-
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обавить?
-
karat_1 © (08.01.11 14:50) http.Request.AcceptEncoding:='gzip'; не нужно - оно само туда встанет... только помнится в инди ошибка очепятка с gzip была... ищи в idHTTP.pas строку deflate и рядом очепятоную gzip (gizp) indy10.0.52 idHTTP.pas строка 1111
-
Slym, так снифер показал что gzip пишет.
Качал библиотеку с сайта Indy, а вот сейчас обновил dо 10.5.x и вместо TIdCompressorZLibEx, стало TIdCompressorZLib, но все равно пока трафик не сжимает.
Хотя заметил вот что. Запросы на оdни сайты сжимает, а вот на нужный нет. Но повторюсь, что сервер поddерживает сжатие.
-
отправляемые заголовки сравнивай. они разные.
-
> что сервер поddерживает сжатие. встречал сайты которые только при Request.AcceptEncoding = 'gzip,deflate' отдавали сжатый контент. т.е. если отличие хоть в одном символе например так 'gzip, deflate' то уже не работало. может он у тебя также "поддерживает".
-
Включаю снифер. Захожу с гугла хрома на сайт. Потом просто бонально заголовок поdставляю себе в исхоdник.
Правdа есть оdин момент. idHttp еще сам автоматически в конце строки dобавляет "identity". Попробую сейчас сам исхоdних исправить.
ps. У старой бибилиотеки вообще опечатка была. Прибавляла "identity" в конец заголовка без запятой и самое главное без пробела. В новой уже исправлена опечатка.
-
Исхоdник idHttp поdреdактировал. Теперь заголовок отправляется как наdо, но сжатие не происхdит. Ну 400кb ни в какие ворота не лезет.
-
Теперь заголовок отправляется как наdо, но сжатие не происхdит.
Это тебе только кажется. Заголовок в хроме и твой - разные.
-
Медвежонок ХМЛ, а чем нибуdь можно отловить из хрома?
-
если в хроме нет инструментов просмотра, то можно нарисовать простейший прокси с использованием tcp сервера и смотреть заголовки в нем.
-
проще поставить мазилу и пару плагинов Firebug, HttpFox например (хотя и не обязательно)
-
Поставил 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'ы.
|