parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

сжатие http-ответа

Sergey M. 04.11.2006 12:45

Хочу передать Gzip-у в stdin некие данные получить от него в упакованном виде в stdout ну и что то дальше с ними сделать (например сохранить в файл или $response:download).
когда-то делал что-то подобное (сжатие ответа с возможностью кеширования), даже класс недоделанный где-то валяется. Было несколько неприятных моментов:

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

2. после сжатия исходный файл удаляется с диска, и изменить такое поведение на сколько я помню не представляется возможным. Хорошо это или плохо - зависит от ситуации, в моем случае пришлось сохранять несжатый файл повторно.

3. данные в файл сохраняются в кодировке, заданной в $request:charset. В моем случае в $request:charset было UTF-8 а в $response:charset однобайтовая кодировка, следовательно после передачи сжатого ответа в браузер приходила куча мусора. Финт ушами со сменой $request:charset на лету (похожий на предложенный Мишей тредом ниже) у меня не прокатил, хотя, возможно я что-то неправильно сделал. Пришлось менять $request:charset на аналогичный в $response, а данные из базы перекодировать при получении.

Вроде были еще какие-то грабли, сейчас уже всего не припомню.
Правда в конечном итоге заработало, но потом пришлось все это дело упразднить, и в продакшн оно так и не попало...