ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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


 




Copyright © Lexa Software, 1996-2009.