Время когда чанк был закеширован

Maxim Dounin mdounin на mdounin.ru
Чт Май 8 13:21:06 UTC 2025


Hello!

On Thu, May 08, 2025 at 11:25:06AM +0300, Peter Volkov wrote:

> Привет. У нас nginx стоит в качестве кеша для статики. При запросе файла с
> сервера я вижу вот такие заголовки:
> 
> < Server: nginx
> < Date: Thu, 08 May 2025 08:15:39 GMT
> < Content-Type: video/mp2t
> < Content-Length: 4635140
> < Connection: keep-alive
> < Keep-Alive: timeout=20
> < Last-Modified: Tue, 17 Sep 2024 13:44:14 GMT
> < ETag: "66e987ae-46ba04"
> < X-Cache-Status: HIT
> < Accept-Ranges: bytes
> 
> Date - это текущее время запроса.
> Last-Modified это время создания файла (на бекенде).
> Вопрос, как можно понять время, когда чанк был закеширован? Я посмотрел
> список переменных Nginx, но не нашёл ничего подходящего.

Если по условиям задачи мы можем доверять заголовку Date от 
бэкенда (обычно это так, но бывают исключения), то его можно 
увидеть в переменной $upstream_http_date.  Для ответов в кэше это 
и будет время, когда ответ попал в кэш.

Начиная с freenginx 1.27.3 есть также переменная 
$upstream_cache_age, показывающая суммарное время нахождения 
ответа в кэше (точнее, кэшах, переданный бэкендом заголовок Age 
также учитывается), подробнее тут:

https://freenginx.org/r/$upstream_cache_age
https://freenginx.org/hg/nginx/rev/e46e1ea89ccd

> P.S. это nginx, а не freenginx, но у нас ещё та версия, когда они были
> едины, поэтому надеюсь это не офтопик тут.

Тут в целом нет проблем с любыми обсуждениями.

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru