Apache кеширует сжатую версию статического файла? - PullRequest
8 голосов
/ 17 июня 2011

Если вы сконфигурируете Apache для включения сжатия gzip для статического HTML / CSS / JS / и т. Д.файлы, он автоматически выводит сжатую версию любому клиенту, который отправляет соответствующий заголовок запроса Accept-Encoding.(А для других клиентов он просто отправляет необработанный несжатый файл.)

Мой вопрос: Apache повторно сжимает необработанный файл каждый раз, когда его запрашивает gzip-принимающий клиент?Или он кеширует сжатую копию и повторно сжимает ее, только если он замечает, что время последнего изменения файла изменилось?

И если он кеширует сжатую копию ваших файлов, где хранится этот кеш?

Ответы [ 3 ]

4 голосов
/ 28 сентября 2013

Нет, он не кеширует сжатый файл.

Однако стоимость сжатия файла меньше, чем стоимость распаковки дополнительных пакетов по сети, поэтому даже без кэширования вы увидите снижение общего процессорного времени.использование (и меньшее использование памяти, и меньше переключений контекста) на вашем сервере - и более быстрый ответ на клиенте.

Обратите внимание, что сжатый файл NOT хранится во временной папке - mod_deflateсчитывает ввод в буфер фиксированного размера в памяти - и когда буфер заполнен (или поток заканчивается), содержимое сжимается и возвращается обратно на веб-сервер.

Он будет использовать еще меньше ЦП (хотя скорость выиграла)не заметно), если содержимое предварительно сжато или кэшировано на стороне сервера - есть несколько способов сделать это - mod_rewrite может проверить наличие файла filename.gz и обработать его вместо имени файла, или вы можете использовать обратный прокси-сервер (предполагая, чтосодержимое также снабжено инструкциями кеширования).

2 голосов
/ 10 августа 2015

Нет, это не так.Это описано в документации mod_deflate сейчас:

Поскольку mod_deflate повторно сжимает контент каждый раз, когда делается запрос, некоторое повышение производительности может быть получено путем предварительного сжатия контента иговорит mod_deflate обслужить их без повторного сжатия.

0 голосов
/ 01 августа 2012

Apache не хранит кэшированные файлы. Он хранит только те файлы, о которых вы говорите. Вот как работает сжатие:

  1. Браузер запрашивает страницу и заявляет, что принимает сжатие
  2. Сервер находит страницу и читает заголовок запроса.
  3. Сервер отправляет страницу в браузер (сжимает, если указано, что он принимает в запросе заголовка - сжатый файл сохраняется в папке memory / temp)
  4. Браузер получает информацию и отображает (после распаковки, если сжат). Затем браузер кэширует страницу и изображения.
  5. Сервер удаляет любые подсказки сжатого файла из папки memory / temp, чтобы освободить место для следующего запроса. Он регистрирует в access_log транзакцию.

Браузер при повторном запросе того же файла или страницы. Он отправляет запрос на сервер о том, что он принимает сжатие, а также текущие файлы и Дата изменения. Отсюда сервер будет отвечать, что они одинаковы и не будет отправлять дополнительную информацию, или отправлять только измененные файлы на основе даты изменения.

...