Я получаю XML-файлы на свой сервер с помощью запроса HTTP PUT. Сжимается ли он во время передачи, если мой Apache настроен с помощью mod_deflate? Как я могу убедиться, что он сжат? Если нет, как я могу принудительно сжать?
Спасибо!
В mod_deflate
используется, когда apache отправляет данные, а не при получении.
Дело в том, что браузер отправляет данные на веб-сервер до того, как узнает, что он поддерживает, поэтому он не может сжимать данные, не зная, сможет ли сервер их обработать.
Если вам действительно нужно более низкое использование полосы пропускания, вам следует сжать файлы xml перед их отправкой и распаковать их в своем приложении.
По моему предыдущий ответ:
Браузер запрашивает сжатие содержимого, задав заголовок Accept-Encoding в соответствии с Вот
GET /index.html HTTP/1.1
Host: www.http-compression.com
Accept-Encoding: gzip
User-Agent: Firefox/1.0
Это вернет сжатые данные в браузер. Однако, чтобы ПОСТАВИТЬ данные на сервер сжатыми, вы должны сжать весь запрос, включая заголовок. Это задокументировано в mod_deflate:
Модуль mod_deflate также предоставляет фильтр для распаковки тела запроса, сжатого с помощью gzip. Чтобы активировать эту функцию, вы должны вставить фильтр DEFLATE в цепочку входных фильтров с помощью SetInputFilter или AddInputFilter.
...
Теперь, если запрос содержит заголовок Content-Encoding: gzip, тело будет автоматически распаковано. Немногие браузеры имеют возможность архивировать тела запросов. Однако некоторые специальные приложения действительно поддерживают сжатие запросов, например, некоторые клиенты WebDAV.
И статья с описанием этого Вот:
Итак, как вы это делаете? Вот рекламное объявление, опять же из исходного кода mod_deflate: работать только с основным запросом / без подзапросов. Это означает, что все тело запроса должно быть сжато gzip, если мы решили использовать это, невозможно сжать только часть, содержащую файл, например, в многостраничном запросе.