Welcome! Log In Create A New Profile

Advanced

Re: инвалидация кеша

September 17, 2012 06:22AM
On 09/17/12 00:18, AndrejAndb wrote:
> Озадачился вопросом выборочной инвалидацией кэша.
>
> к примеру следующий use case:
> Есть 2 типа страниц:
> 1) список статей
> 2) статья с пользовательскими комментариями
> страницы генерируются посредством fastcgi и кэшируются что то типа:
> fastcgi_cache_path /var/cache/nginx levels= keys_zone=pagecache:360m
> inactive=360m max_size=300m;
> fastcgi_cache_key
> "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
>
> требуется
> 1) при изменении статьи принудительно инвалидировать кэшированные страницы
> со списком статей и страницы самой статьи
> 2) При добавлении комментария инвалидировать страницу статьи - куда был
> добавлен комментарий
>
>
> И решения которые приходили в голову:
>
> 1) Чистить ВЕСЬ кэш всегда - как-то не спортивно, и в случае высоких
> нагрузок - неприменимо
>
> 2) При отдаче с PHP бэкенда, записывать запрашиваемый URL в отдельное
> хранилище, и при необходимости инвалидировать страницу: выдернуть все
> необходимые URL (попадающие под нужное условие) из хранилища и удалять все
> файлы из /var/cache/nginx соответствующие
> md5($request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri).
> - Несколько сложно, и такой способ вызывает еще ряд сложностей...
>
> 3) При отдаче с PHP бэкенда писать в заголовок ответа Тэги страницы:
> "X-CACHE-TAGS: entry_id1 entry_id2 entry_id3 entry_list" - список из 3х
> статей
> "X-CACHE-TAGS: entry_id1 entry_one" - статья id1
> И при необходимости инвалидировать все страницы, где упоминается entry_id1,
> нужно будет пройтись по всем файлам в кэше, отыскать наличие в заголовке
> данного тега и удалить его.
> Идея показалась интересной, но при наличии большого кол-ва файлов в кэше -
> процесс инвалидации может затянуться.
>
> 4) использовать memcache.
> Вроде бы самый оптимальный вариант, поскольку PHP бэкенд знает куда что
> пишет - и без проблем сможет инвалидировать... Единственный недостаток:
> бэкенд не может писать заголовки ответа в такой кэш. Это минус - поскольку
> усложнит конфиги nginx, но думаю можно смириться. Другой минус - кол-во
> оперативной памяти под мемкэш куда более ограниченей свободного места на HDD
> под файловый кэш.
>
> И в общем то вопрос: не изобретаю ли я велосипедов? :)

3rdp party module:
http://labs.frickle.com/nginx_ngx_cache_purge/

>
> Posted at Nginx Forum: http://forum.nginx.org/read.php?21,230763,230763#msg-230763
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

инвалидация кеша

AndrejAndb September 16, 2012 05:18PM

Re: инвалидация кеша

sergey.kobzar September 17, 2012 06:22AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 177
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready