Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Исключить кеширование о тдельно взятого файла
On Mon, Jun 07, 2010 at 11:18:46AM -0400, grigory wrote:
> Добрый день. У меня включено кеширование на сервере, но один скрипт постоянно
> обращается к серверу через AJAX сотни раз в минуту, и у него каждый раз
> уникальный url, чтобы браузер не кешировал. Из-за этого в кеше nginx'а
> возникают тысячи файлов, которые генерируются, по-сути, этими запросами, и в
> кеше абсолютно не нужны.
>
> Конфиг примерно такой:
>
> ===================
> ...
> proxy_cache_path /var/cache/nginx levels= keys_zone=wholepage:50m;
>
> server {
> listen 80;
> server_name server.com www.server.com;
>
> keepalive_timeout 0;
>
> gzip on;
> gzip_min_length 5000;
> gzip_proxied any;
> gzip_types text/plain text/xml application/xml application/x-javascript
> text/javascript text/css text/json;
> gzip_comp_level 6;
> gzip_buffers 16 8k;
> gzip_disable ?MSIE [1-6].(?!.*SV1)?;
>
> location / {
> proxy_pass http://server.com:8080/;
> proxy_redirect off;
> proxy_set_header Host $host;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>
> client_max_body_size 10m;
> client_body_buffer_size 128k;
>
> proxy_connect_timeout 90;
> proxy_send_timeout 90;
> proxy_read_timeout 90;
>
> proxy_buffer_size 4k;
> proxy_buffers 4 32k;
> proxy_busy_buffers_size 64k;
> proxy_temp_file_write_size 64k;
>
> proxy_cache wholepage;
> proxy_cache_valid 200 301 302 304 30m;
> proxy_cache_key
> "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
> proxy_hide_header "Set-Cookie";
> proxy_ignore_headers "Cache-Control" "Expires";
>
> root /var/www/virtual/server.com;
> }
> ...
> ================
>
> Я так понимаю, что мне нужно добавить location в конфиг вроде такого
> (отключить кеширование у файла find.php):
>
> location ~ ^/find.php {
> proxy_cache off;
> }
>
> Но из-за этого файл find.php просто перестает работать с ошибкой 405 Not
> Allowed.
>
> Подскажите, как сделать правильно, что кэш работал как прежде, но исключал
> find.php.
Отвыкаем мыслить регулярными выражениями, достаточно
location = /find.php {
Вот этот кошмар не нужен:
proxy_cache_key
"$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
Конфигурация выглядит так:
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://server.com:8080;
proxy_redirect off;
proxy_cache wholepage;
proxy_cache_valid 200 301 302 304 30m;
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Cache-Control" "Expires";
}
location = /find.php {
proxy_pass http://server.com:8080;
proxy_redirect off;
}
--
Игорь Сысоев
http://sysoev.ru
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|