Может ли веб-клиент скачать статический файл file.csv.gz, представив его как file.csv?
Из того как понимаю HTTP заголовки Accept-Encoding, Content-Encoding, уже пожатый статический файл file.csv.gz будет повторно сжат веб-сервером и распакован как file.csv.gz. Или я не прав?
Возможно вопрос дурацкий, интересно, можно ли, имея на сервере файл file.csv.gz, скачать его в виде распакованного file.csv? Таким образом, со стороны сервера будет экономиться место диска, а со стороны веб-клиента нет нужды пользоваться архиваторами для распаковки файла gz.
Роман Мирр: nginx отдает запакованый файл, при этом браузеру отдается заголовок, говорящий о том, что это gzip. Браузер это понимает и сохраняет файл/показывает страницу в распакованом виде
Антон Иванов:
> браузеру отдается заголовок, говорящий о том, что это gzip. Браузер это понимает и сохраняет файл/показывает страницу в распакованом виде
Вообще-то скачивая через браузер файл gz, то я и получаю его таким же, а не распакованным. Распаковка, даже опциональная, в любом случае происходит на стороне веб-клиента.
Но эта распаковка касается сжатых данных, полученных по сети, таким образом, на входе у браузера всё равно тот же gz, который ему и передали. А мне нужно, чтобы браузер понимал сам как сохранить содержание файла в gz.
Роман Мирр: у Вас вопрос поставлен абсолютно четко: "можно ли, имея на сервере файл file.csv.gz, скачать его в виде распакованного file.csv?"
ответ - можно. За это отвечает gzip_static
Сейчас Вы пишете, что вам надо, чтобы браузер сохранял файл в .gz
Роман Мирр: А файл вы получаете не распакованным, потому что качаете .gz
Качать надо file.csv. При правильной настройке nginx, с сервера будет отдан file.csv.gz, который браузер на лету распакует, как будто это был скачан незапакованый file.csv
Антон Иванов:
> Сейчас Вы пишете, что вам надо, чтобы браузер сохранял файл в .gz
Нет, я имел в виду распаковку содержимого архива.
> Качать надо file.csv
То есть имея на сервере файл file.csv.gz, нужно просить как file.csv?
Роман Мирр: Именно. Вы запрашиваете file.csv. Nginx (при включенной опции gzip_static и верно прописанных типах в gzip_types) проверяет, есть ли file.csv.gz (несмотря на то, что Вы запросили file.csv) и, если такой файл есть, отдает его с заголовком Content-Encoding: gzip. Браузер, по наличию такого заголовка, понимает, что к нему пришел запакованный контент и на лету его распаковывает.
Антон Иванов: Во как! Спасибо за наводку для nginx.
На данном этапе архитектура веб-сервиса только разрабатывается и ещё не ясно что будет выступать в роли фронтального веб-сервера.