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

Igor Vavrjin igor.vavrjin на gmail.com
Пт Авг 19 17:30:27 UTC 2011


19 августа 2011 г. 20:48 пользователь Igor Sysoev <igor на sysoev.ru> написал:
> 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 в начале тоже ?
Насчет HTTP не уверен (надо было приложить сам файл кэша, если еще раз
поймаю - приложу, сейчас таких файлов нет) - там в начале какие-то не
читаемые символы стоят типа
N<9D>NN^@^@^@^@<FF><FF><FF><FF><FF><FF><FF><FF>ʙNN^@^@^@^@:Dv1^@^@V^@<9E>^@TP/1.1
(но это взято из нормального кэша). Строка взята из консоли командой
less file_name - кодировка UTF-8

> Какая версия nginx'а ?
nginx version: nginx/0.8.54

>
>> 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 mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>


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