2014-12-11 3 views
0

У меня есть gzipped ответ с использованием фильтра. Полученные данные были сжаты с 50 МБ до 5 МБ, однако это не привело к значительной экономии времени. Затраченное время сократилось с 12 секунд до 10 секунд. Есть ли что-нибудь еще, что можно сделать для сокращения периода времени?GZIP Сжатие ответа HTTP перед отправкой клиенту

Первоначально передача данных по сети потребовалось 9 секунд, теперь она занимает 6 секунд после сжатия и 1 сек распаковывать примерно

Что еще можно сделать?

+0

Получить более быстрое соединение? –

+0

Закрепление в фильтре ... Почему бы не включить встроенный компрессионный кодер GZIP? – vzamanillo

+0

Требуется 9 секунд для передачи 50 МБ по сети и 6 секунд для передачи 5 МБ? Либо ваша сеть действительно странная, либо ваши измерения времени не измеряют то, что вы думаете, что они измеряют. –

ответ

0

Для фильтра возможные меры мало:

  • Там существуют различные уровни сжатия, тем больше сжатие, тем медленнее. Значение по умолчанию или GZIPOutputStream должно быть достаточно быстрым.
  • GZIPOutputStream имеет конструкторы с size для установки.
  • Затем буферизируется потоковая передача и не выполняется побайтно int read().
  • Проверка кода на достоверность: исходный заголовок Content-Length должен быть удален.

Для статического контента:

  • .bmp являются пустой тратой пространства
  • .pdf может быть оптимизирована, когда изображения повторить, w.r.t. шрифты.
  • .docx это формат почтового индекса, так что внутренние файлы изображений могут быть оптимизированы слишком

Для динамического контента поколения:

  • Фиксированные документы могут быть сохранены (xxxxxx.yyy.gz) с меткой времени и то время генерации падает. Только интерес после измерения настоящей горлышка бутылки; вероятно, сеть.
  • Код для доставки должен быть быстрым. В общих сетевых потоках старайтесь не записывать в ByteArrayOutputStream, но сразу же в BufferedOutputStream (исходный выходной поток). Убедитесь, что буферизация выполняется не дважды. Некоторые потоки обтекания проверяют, что обернутый поток является экземпляром буферизации.

среда Производство:

  • Может быть, вы даже нужно дросселирования (замедление доставки) для того, чтобы обслуживать несколько одновременных запросов.
  • Возможно, вам потребуется выполнить доставку на другом сервере.
  • Купить скорость у поставщика. Спросите у провайдера, была ли слишком высокая пропускная способность, а провайдер замедлил работу.
Смежные вопросы