Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Очистка кеша nginx
у меня на крупных порталах программисты часто используют nosql
кеширование radius и memcached на уровне приложения, чтобы кешировать
не всю страницу целиком, а какие-либо данные/части страницы, что
позволяет разгузить хосты с пхп и майскл.
целиком же кешировать страницу на нормальных сайтах на продолжительный
промежуток времени (больше минуты) никто не разрешает. поэтому, если
переписывать уровень приложения нет возможности, я обычно кеширую
страницы такого домена на 1 минуту, что позволяет существенно снизить
нагрузку при т.н. хабра-эффекте.
если сайт на wordpress, то можно использовать плагин
http://wordpress.org/extend/plugins/nginx-helper/ - он удаляет
страницы из кеша после их изменения при соотвествующей конфигурации,
обращаясь на специальный локейшн. пример:
location ~ \.php$ {
...
fastcgi_cache_key
"$scheme|$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
...
}
location ~ /purge(/.*) {
log_not_found off;
set $uri_orig $1; # энкодим кирилличное выделение
fastcgi_cache_purge CACHE
"$scheme|$request_method|$http_if_modified_since|$http_if_none_match|$host|$uri_orig$is_args$args";
}
Т.е. кеш удаляется по ключу. по которому он был создан. Похожим
образом Вы можете организовать своевременное обновление кеша у себя.
На самом же деле, у себя я ограничиваю только размер кеша (а он
находится на рамдиске), а inactive выставляю в 24h. Таким образом кеш
со временем вырастает до своего max_size, а потом cache manager
начинает сам оттуда удалять самые старые записи. Время кеширования
выставляю в 1m. Если вдруг отвалится бекэнд, то самые просматриваемые
страницы сайта будут по-прежнему загружаться, т.к. настроен
proxy_cache_use_stale. Минус данного способа в том, что кеш занимает
постоянно весь выделенный под него объём, а также в том, что
необходимо правильно подобрать экспериментально размер этого самого
кеша, учитывая сколько разных страниц одновременно открывают
пользователи.. Но в любом случае, для большого сайта, есть смысл
управлять кешем на уровне приложения - это просто, удобно и
эффективно.
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|