Re: Очистка кеша nginx

VovansystemS vovansystems at gmail.com
Thu Feb 7 12:28:06 UTC 2013


у меня на крупных порталах программисты часто используют 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