Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
как лучше управлять кешированием fastcgi_cache
- To: nginx-ru@xxxxxxxxx
- Subject: как лучше управлять кешированием fastcgi_cache
- From: VovansystemS <vovansystems@xxxxxxxxx>
- Date: Thu, 26 Dec 2013 12:17:16 +0300
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=C7rmX5fKA9KC3A3SA0zb97mByE8seVsDJVQupymnReY=; b=lSJcUCyH97nIZicrrTXzyZETilOyqkGdcl8nYsRQ3N3RA5tF4gZ456UgXIGd/iPoTs 8cRAx8m2xAbgxo3t32+C7TFGBL5UdfQksLFHIm7XyiDheHc6Bd7X5KHgHwP53ZUBWYqI 8KbjX+INDJCKsXMC+7XyNCJGyLKK4IRbsscWZd2VG7K47SfcnAcaHghtAJgiFbGpe1qM IxGsJUEqF992yHMFVQGc0jPjQuTIzgc5lIwQ3/GAu6Dbp9Jt2vmSfmMTcvbMnjB9Gfyq PSTi/YlgmHB+kOO7HqSRCohn+uJdPJSqwXK7bKP4eXg2kt0p471gkZi5MwdrDhC/AuDI 3bpg==
Добрый день,
скажите, пожалуйста, каким образом правильнее в nginx 1.5.x + php5-fpm (chroot):
1. выставлять разные параметры кеширования для различных локейшнов,
при использовании CMS на основе kohana (всё реврайтится на index.php)?
сейчас я делаю это через if и $request_uri.
2. Есть ли смысл в ключе кеширования указывать также
"$http_if_modified_since|$http_if_none_match|"? Etag будет одинаковый
для некоторого числа запросов, а вот $http_if_modified_since просто
будет плодить элементы кэша, но работать они будут тогда, когда два
таких запроса придут в одну и ту же секунду?
Сейчас использую примерно вот такой конфиг - как лучше его переписать:
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;
charset utf-8;
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 ($request_uri ~* "^/admin(/?.*)$") {
set $no_cache 1; # не кешируем админку
}
if ($request_uri ~* "^/search/(.*)$") {
set $no_cache 1; # не кешируем поиск
}
# не кешируем, если есть такие куки
if ($http_cookie ~*
"auth_user|login|comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in")
{
set $no_cache 1;
}
location / {
rewrite ^/(.*)/$ /$1 redirect; # все ури должны быть без слэша на конце
try_files $uri /index.php$is_args$args;
}
location = /index.php {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9001;
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|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
fastcgi_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
fastcgi_cache_min_uses 1;
fastcgi_cache_valid 1h;
fastcgi_cache_valid any 10s;
fastcgi_cache_use_stale updating error timeout invalid_header
http_500; # отдаём устаревший закешированный ответ в этих случаях
}
# все остальные .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@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|