кеширование php скриптов

coramba nginx-forum на nginx.us
Пн Янв 23 11:29:00 UTC 2012


Приветствую!

Сори если вопрос нубский, но перечитав
кучу статей решения не нашел.
Задача следующая есть php скрипт
выдающий png-картику. Актуальность
картинки 2-3 часа, после чего надо
генерировать новую. Изначально был
написан вариант при котором полученная
картинка сохранялась в файл, а потом
раздавалась nginx'ом как статика. Но такой
вариант неудобен тем, что нужно
"ручками" удалять полученные файлы
каждые три часа. 

Тогда возникла идея кешировать nginx'ом
ответ скрипта на требуемое время. Но
реализовать задумку получилось только
частично. Работа скрипта явно
кешируется (содержимое картинки не
меняется в течении срока кеширования),
но при этом браузер получает код 200, а не
304 который требуется, и соответственно
запрашивает картинку повторно.
Подскажите пожалуйста в чем ошибка?

фагмент конфига:
==============8<----------------------------------------------------------------
	fastcgi_cache_path /var/cache/nginx levels= keys_zone=wholepage:64m;

	location ~*WoT/(.+)/dogtag.png {
                ...
		add_header	Cache-Control  private;
		add_header	Expires 10m;
		expires		10m;

		rewrite  ^/WoT/(.+)/dogtag.png$ /WoT/dogtag.php?text=$1;
	}

	location ~*WoT/dogtag.php {
		...
		add_header	Cache-Control  private;
		add_header	Expires 10m;
		expires		10m;

	  	fastcgi_cache			wholepage;
		fastcgi_cache_valid		304 30s;
		fastcgi_cache_valid		any 1m;
		fastcgi_cache_key		"$request_method|$http_if_none_match|$host|$request_uri";
		fastcgi_hide_header	"Set-Cookie";
		fastcgi_ignore_headers	"Cache-Control" "Expires";
		
		include				/etc/nginx/fastcgi_params;
		fastcgi_pass			unix:/tmp/fastcgi-www-img.socket;
	}

==============8<----------------------------------------------------------------
Версия nginx 0.8.54

С уважением, Денис

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,221536,221536#msg-221536



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