Выходное сжатие Apache не работает, если задана длина содержимого

У меня есть этот минимальный код, который выводит некоторый текст:

<?php

$output = "";

for ($i = 0; $i < 7000; $i++) {
$output .= ($i % 2) ? "Foo " : "Bar ";
}

header("Content-Length: ".strlen($output));
echo $output;

exit;

Используя Apache 2.2.34 на моем веб-сервере, я не могу сжать вывод через .htaccess (см. Ниже).

Но если я просто уберу это header("Content-Length… строка, неожиданно вывод сжимается, как ожидалось, и отправляются соответствующие заголовки (Content-Encoding: gzip, Vary: Accept-Encoding, Transfer-Encoding: chunked).

Мой .htaccess использует AddOutputFilterByType а также Filter* Директивы, я пробовал оба независимо друг от друга:

AddOutputFilterByType DEFLATE "text/html"
<IfModule filter_module>
FilterDeclare   COMPRESS
FilterProvider  COMPRESS  DEFLATE Content-Type $text/html
FilterProvider  COMPRESS  DEFLATE resp=Content-Type /text/(css|javascript|plain|xml|x-component)/
FilterProvider  COMPRESS  DEFLATE resp=Content-Type /application/(javascript|json|xml|x-javascript)/
FilterChain     COMPRESS
FilterProtocol  COMPRESS  change=yes;byteranges=no
</IfModule>

Я не испытываю этой проблемы в своей локальной рабочей среде, где я использую Apache 2.4 (к сожалению, я не могу обновить сервер).

РЕДАКТИРОВАТЬ: В моем случае проблема решена, см. Мои комментарии ниже.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]