Re: Проблема с кэшем

Igor Sysoev igor на sysoev.ru
Пт Авг 19 13:48:05 UTC 2011


On Fri, Aug 19, 2011 at 06:26:29PM +0700, Игорь Вавржин wrote:
> Здравствуйте.
> 
> Периодически появляется такая проблема: в кэш nginx попадает примерно 
> вот такое содержимое
> 
> KEY: nsk|GET|site.com|/page.html
> X-Powered-By: PHP/5.3.6-6~dotdeb.0
> Expires: Mon, 26 Jul 1997 05:00:00 GMT
> Last-Modified: Fri, 19 Aug 2011 10:32:20 GMT
> Content-Type: text/html; charset=UTF-8
> 
> Соответственно при попытке обратиться повторно за ответом - браузер 
> ничего в ответ не получает (нет вообще контента) и говорит что адрес 
> недоступен.
> Спасает чистка кэша. Скажите что можно сделать, а то я в панике :)?

То есть, тела нет и HTTP/1.0 в начале тоже ?
Какая версия nginx'а ?

> server {
>      listen *:80 default;
> 
>      error_log /var/log/nginx/default.error.log;
>      access_log  /var/log/nginx/default.access.log;
> 
>      charset utf-8;
>      root /var/www/data;
> 
>      location / {
>          index index.php;
>          set $path_info $uri;
>          try_files $uri $uri/ /index.php?$args;
>      }

Вот это:

>      if ($request_method != "GET") {
>          set $not_cached 1;
>      }

не нужно. Для этого есть fastcgi_cache_methods, разрешает кэш для GET и HEAD.

>      location ~ \.php$ {
>          fastcgi_pass backend_local;
>          include fastcgi_params;
>          fastcgi_param PATH_INFO $path_info;
>          fastcgi_param SERVER_NAME $host;
> 
>          fastcgi_cache_bypass $is_args $not_cached $cookie_PHPSESSID 
> $cookie_no_nginx_cache;
>          fastcgi_no_cache $is_args $not_cached $cookie_PHPSESSID 
> $cookie_no_nginx_cache;
>          fastcgi_cache getpages;
>          fastcgi_cache_valid 200 301 302 304 15m;
>          fastcgi_cache_key 
> "$cookie_city_code|$request_method|$host|$request_uri";

Ключ лучше сделать
   "$host|$uri?$args|$cookie_city_code";


-- 
Игорь Сысоев
http://sysoev.ru



Подробная информация о списке рассылки nginx-ru