Вопрос:
Как насчет того, чтобы проверять заголовки, которые пришли клиента? Если клиент говорит, что скушает gzip — кормить gzp'ом, отказался от gzip'а, но сказал, что ест deflate, то deflate'ом?
Ответ:
Я как раз так и делаю:
if(isset($_SERVER['HTTP_ACCEPT_ENCODING']))
$acceptEnc = $_SERVER['HTTP_ACCEPT_ENCODING'];
else
$acceptEnc = $_SERVER['HTTP_TE'];
$_SERVER[cmsGZIP] = array(
"enabled" => (stristr($acceptEnc, 'gzip') || stristr($acceptEnc, 'deflate'))? true: false,
"algorythm" => (stristr($acceptEnc, 'deflate'))? "deflate" : "gzip",);
Т.е. создается ассоциативный массив вида
a["enabled"]=true или flse
a["algorythm"]="deflate" или "gzip"
и передается в $_SERVER[cmsGZIP].