Re: Формат кеш-файлов

Валентин Бартенев vbart на nginx.com
Чт Авг 20 14:00:51 UTC 2015


On Thursday 20 August 2015 16:40:11 Orlovsky Alexander wrote:
> Всем привет!
> 
> Стало интересно сделать утилиту по просмотру nginx кеша на диске, в основном для:
>  1. поиска по ключу (префиксу) / контенту
>  2. просмотра TTL-ей и контента
>  3. удаления по условию
>  
> 1 и 3-е  реализовать кажется очень просто – во всех файлах есть строчка KEY: blah-blah и после нее идет контент
> поэтому я стал разбираться с п.2, нашел такой проект: https://github.com/perusio/nginx-cache-inspector
> Сделал парсинг TTL, как там это реализовано в get_cache_item_ttl, т.е. первые 16 байт сохраняю в два int32-поля t1 (timestamp) и t2 (? там всегда -1). Я правда не понял логику автора, почему второе значение вычитается из первого и на основании этого делается вывод про 404, может у меня такие настройки, но таких данных в не самом маленьком кеше, взятого с продакшена я не нашел.
> Еще не все файлы из кеша, на котором я тестирую свой код, начинаются  одинаково (строками одной длины), формат похоже очень разный. Интересно, почему так?
>  
> Основной вопрос такой – есть ли где либо описание формата этих кеш файлов (точнее бинарного заголовка с которого они начинаются)? Я могу заглянуть в исходники, но надо знать где искать и подсказки бы не помешали.
> Может кто-нибудь помочь?
> 

http://hg.nginx.org/nginx/file/79a50ebb3b89/src/http/ngx_http_cache.h#l117
http://hg.nginx.org/nginx/file/79a50ebb3b89/src/http/ngx_http_file_cache.c#l1212

--
Валентин Бартенев


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