Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: purge
Игорь,
> В общем, там не особо понятно. Особенно, как именно делается инвалидация.
> Да и многословно как-то - 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 mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|