purge
Alexandr Sergeyev
asergeyev на dyn.com
Пт Июл 30 18:23:54 MSD 2010
Игорь,
> В общем, там не особо понятно. Особенно, как именно делается инвалидация.
> Да и многословно как-то - rel="invalidates", rel="invalidated-by":
> напоминает WebDAV.
> Я пару лет назад планировал ленивую инвалидацию большого объёма ответов
> таким образом: в ответ добавляются заголовки с ключами в виде md5-хэшей:
> X-Accel-Depends: XXXXX...md5...XXXXXX YYYYY...md5...YYYYYY ...
> X-Accel-Invalidate: XXXXX...md5...XXXXXX YYYYY...md5...YYYYYY ...
Я считаю что это очень хорошая и работоспособная схема что вы предлагаете и тут и в первом письме с реджексами. Разве что не хватает того самого "Depends" описывающего
Я не считаю link rel= чем то лучшим. Просто если они сделают RFC то неплохо было бы иметь в планах добавить их решения в поддерживаемые аттрибуты инвалидации.
В любом случае, любая инвалидация на фронтэнде лучше чем на бэкэнде... Я был бы рад любому решению которое дало бы мне возможность давать кешу большие сроки хранения и вычищать по необходимости а не по таймеру.
Вопрос ещё.... Как вы думаете правильно ли при отправке POST PUT DELETE на конкретный URL инвалидировать его копию (полученную по GET) в кеше? На мой взгляд это совершенно не нужное, но люди с REST API или прочими "стандартными" подходами будут этого ожидать (как собственно и link rel=" на какой то стадии "стандартизирования").
Ещё раз перечитал вашу ленивую инвалидацию и подумал что возможно парсер заголовков и прочие подходы к инвалидации будут медленнее чем что-то описанное раз и навсегда в конфиге... (не возьмусь за верность синтакса просто мысли)
location /admin/ {
proxy_cache_purge accel-invalidate; # чтоб читал X-Accel-Invalidate или link-invalidates чтоб rel...
}
location /[0-9]+/ {
if ($arg_action = "send_comment") {
proxy_cache_purge /path/$some_folder_via_map/comments.xml
}
proxy_cache_purge_depends /path/$some_folder_via_map/comments.xml; # или например название заголовка X-Accel-Depends
}
Может и что-такое для скорости придумать? Запутано конечно выглядит.... Перемудрил?
Но мой вопрос в одном - можно ли сделать быструю инвалидацию фронтэндом так или парсинг заголовков в любом случае произведён и нет ничего сложного чтоб их и использовать?
Саша.
Подробная информация о списке рассылки nginx-ru