Welcome! Log In Create A New Profile

Advanced

Re: как лучше управлять кешированием fastcgi_cache

VovansystemS
December 26, 2013 10:16AM
> Нет. При кешировании заголовки If-Modified-Since и If-None-Match
> на бекенд не передаются (за исключением ревалидации кеша самим
> nginx'ом), так что в ключе их указывать бессмысленно и может
> принести лишь проблемы.
спасибо!


> Если нужна обработка одним и тем же index.php, то в нужных
> location'ах явно указывать SCRIPT_FILENAME.
вынес в отдельные location'ы то, что требует особых параметров
кеширования, а сами настройки кеширования теперь задаются на уровне
server.


> Лучше - по возможности избегать использование if'ов и rewrite'ов.

А вот как убирать слэши в конце URI без rewrite я не смог придумать
(так, чтобы было перенаправление на URI без слэша) - есть ли какое-то
иное решение?

Также не совсем понятно, как избавится от if, когда на то, нужно ли
кешировать (отдавать закешированный) контент, влияет несколько
факторов (есть ли определённая кука ИЛИ метод запроса post ИЛИ есть
аргументы (например)). Возможно ли и стоит ли переписать это на map'ы
и как это будет выглядеть? Как бы сделали Вы?


fastcgi_cache_path /run/shm/MAIN levels=1:2 keys_zone=MAIN:64m
max_size=100m inactive=240h;

server {
listen 80;
server_name domain.com;
error_log /var/log/nginx/domain.error.log error;
access_log /var/log/nginx/domain.access.log;

root /home/user/domain.com/public_html/;

set $no_cache 0;
if ($request_method = POST) {
set $no_cache 1; # не кешируем POST
}
if ($https = on) {
set $no_cache 1; # не кешируем https
}
if ($query_string != "") {
set $no_cache 0; # кешируем страницы с аргументами
}
# не кешируем, если есть такие куки
if ($http_cookie ~*
"auth_user|login|comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in")
{
set $no_cache 1;
}

include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /public_html/index.php;
fastcgi_param DOCUMENT_ROOT /public_html;
fastcgi_param KOHANA_ENV production;

# если $no_cache отличен от нуля, отдаём некешированную страницу
fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;
# ревалидируем элемент кэша при помощи условных запросов с полем
заголовка "If-Modified-Since"
fastcgi_cache_revalidate on;
fastcgi_temp_path /run/shm/fcgi 1 2;
fastcgi_cache MAIN;
fastcgi_cache_key "$scheme|$request_method|$host|$request_uri";
fastcgi_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
fastcgi_cache_valid 1h;
fastcgi_cache_valid any 10s;
fastcgi_cache_use_stale updating error timeout invalid_header
http_500; # отдаём устаревший закешированный ответ в этих случаях

rewrite ^/(.*)/$ /$1 redirect; # все ури должны быть без слэша на конце

location / {
try_files $uri /index.php$is_args$args;
}

location ~* "^/(admin|search)((/.*)$|/$)" {
set $no_cache 1;
fastcgi_pass 127.0.0.1:9001;
}

location ~* "^/(news|feed)((/.*)$|/$)" {
fastcgi_cache_valid 10m;
fastcgi_pass 127.0.0.1:9001;
}

location = /index.php {
fastcgi_pass 127.0.0.1:9001;
}

# все остальные .php файлы
location ~* \.php$ { return 403; }

# статика
location ~*
^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|docx)$
{
expires 60d;
access_log off;
}
}
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

как лучше управлять кешированием fastcgi_cache

VovansystemS December 26, 2013 04:18AM

Re: как лучше управлять кешированием fastcgi_cache

Maxim Dounin December 26, 2013 07:30AM

Re: как лучше управлять кешированием fastcgi_cache

VovansystemS December 26, 2013 10:16AM

Re: как лучше управлять кешированием fastcgi_cache

Maxim Dounin December 26, 2013 10:44AM

Re: как лучше управлять кешированием fastcgi_cache

VovansystemS December 26, 2013 01:20PM

Re: как лучше управлять кешированием fastcgi_cache

S.A.N December 29, 2013 01:04AM

Re: как лучше управлять кешированием fastcgi_cache

Валентин Бартенев December 26, 2013 10:52AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 298
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready