Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Софт
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2012, 15:46   #1
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию gzip в браузерах

Привет, народ.
Тут вычитал что современные браузеры поддерживают сжатий gzip контент для ускорения передачи данных.
Насколько это правда, и как тогда я смогу использовать эту возможность для передачи сжатого от моего сервера к браузеру?
Предположим я сжал в своем сервере gzip модулем контент и передаю браузеру, как указать ему что это сжатый контент, и его нужно еще распаковать?
В JS есть средства для этого или сами браузеры расчехляются, как только получают сжатый контент?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.11.2012, 16:26   #2
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

Если браузер поддерживает сжатие, то контент сам должен расчехлиться.

Тут вроде хорошо описан процесс
Xardas вне форума Ответить с цитированием
Старый 23.11.2012, 16:43   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ага, т.е. есть шанс таким образом сжимать данные, передаваемые через AJAX с соответствующим НТТР хедером и браузер сам распознает необходимость разжатия.
Это хорошо, это можно использовать для передачи больших словарей в начале сессии.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.11.2012, 17:31   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Чтобы клиент узнал что вы ему gzip заслали, надо в шапку от сервера вставить:
Content-Encoding: gzip и запаковать этим алгоритмом данные.

Чтобы серверу знать, узнает ли клиент gzip или нет, в шапке клиента должно быть:
Accept-Encoding: gzip, deflate
Человек_Борща вне форума Ответить с цитированием
Старый 23.11.2012, 17:45   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Понял. Попробую, и подумаю где это стоит применить в проекте, а где нет.
За ответы спасибо
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.11.2012, 21:16   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Попробую, и подумаю где это стоит применить в проекте, а где нет.
Везде... где только можно.

Просто говорите серверу, что способны разжать gzip, и от этого отталкиваетесь, и получаете куда меньший входящий/исходящий(если сами пакуете) трафик.

Цитата:
Content-Encoding: gzip //Говорим, что сами запаковали в GZIP
Accept-Encoding: gzip, deflate //Говорим что умеем кушать GZIP
Могут быть как у сервера, так и у клиента в шапках.
Человек_Борща вне форума Ответить с цитированием
Старый 23.11.2012, 21:27   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и получаете куда меньший входящий/исходящий(если сами пакуете) трафик.
А так же нагрузку на сервер в результате операций сжатия
Не, тут надо подумать. Если передаваемый контент маленький то и сжимать его не нужно - от сжатия маленького контента я кстати только потеряю в трафике.
Другое дело - мне в одном из случаек корче треба передать огромный (от 1000 до 10000) строк справочник клиенту, который будет активен в процессе всего сеанса. Вот его стоит жать, и нагрузка на сервер будет не так частая, потому как предполагается что сеанс не будет прерываться весь рабочий день.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.11.2012, 22:38   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

С этим согласен, но можно же по умному сделать. Записать эдакий "разум" в код. Чтобы по размеру данных(не сжатых) определять минимум когда уже требуется сжатие дабы уменьшить объем трафика ну на 20%(с потолка).... при меньших размерах не сжатой инфы, сжатие станет проблемой

Кароче, тупо найти тот самый минимум при котором уже нужно сжатие "без потерь с обеих сторон".

Последний раз редактировалось Человек_Борща; 23.11.2012 в 23:26.
Человек_Борща вне форума Ответить с цитированием
Старый 23.11.2012, 23:16   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм... Идея заслуживает внимания. Плюс к этому мне не обязательно сжимать 9-м уровнем же... Это ведь текст.
А браузер сам догадается какой уровень сжатия используется?
Параметр deflate за что отвечает если не секрет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.11.2012, 23:32   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Хм... Идея заслуживает внимания. Плюс к этому мне не обязательно сжимать 9-м уровнем же... Это ведь текст.
Вот набросал немного кода...
Определяет размер данных необходимых для достижения потери n% в весе нормального трафика.

Блок текста в 512 байт сжимается в 26 байт и таким образом уровень сжатия 94%

Deflate - можно прировнять к GZIP. Думаю это аппендикс, для старья т.к. gzip в себе содержит реализацию deflate.

Цитата:
А браузер сам догадается какой уровень сжатия используется?
При декомпрессии уровень сжатия берется из шапки файла(потока), который был туда записан при сжатии. Другими словами,
Winrar у вас не спрашивает, с каким уровнем был сжат архив X =).

А Accept-encoding клиент говорит серверу, о каких методах возможного кодирования приходящего трафика знает клиент и соответственно сможет правильно декодировать его.

Я обычно указываю только GZIP.

Сейчас дописываю свой навес над THTTPSend, как раз туда эту идею в самый раз....
Вложения
Тип файла: rar GZipTraffGoods.rar (635.2 Кб, 8 просмотров)

Последний раз редактировалось Человек_Борща; 23.11.2012 в 23:39.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка GZIP denis76560 Работа с сетью в Delphi 2 17.10.2012 18:33
Неправильное магическое число в заголовке GZip. Передача должна идти в поток GZip. MyXa C# (си шарп) 0 19.08.2012 10:20
HTTP и Gzip Slafka C/C++ Сетевое программирование 3 18.10.2011 20:30
Gzip в Delphi sivuda Работа с сетью в Delphi 1 22.08.2010 19:55
Разжать GZIP CoDeR Общие вопросы Delphi 3 23.06.2009 00:20