Есть ли какие-то преимущества в производительности от использования Varnish вместе с php-fpm и nginx? [закрыто]

PHP-FPM 5.6 и Nginx 1.6.2, несомненно, обеспечат максимальную производительность, по крайней мере, по скорости. Итак, я хотел бы знать, есть ли какие-либо плюсы / минусы для добавления кеша лака для увеличения скорости. Я читал много блогов, в которых утверждается, что использование nginx + varnish - это немного излишне, но я до сих пор не получил отзывов, которые могли бы это оправдать.

0
задан 14 October 2014 в 17:18
2 ответа

Это зависит от того, как вы используете nginx. Если вы не используете какие-либо функции кеширования в nginx, то Varnish определенно принесет вам пользу. Вы должны решить, какую функцию будет выполнять каждый из них. При этом, если вы хотите использовать «двойное кэширование», я сомневаюсь, что это хорошая идея.

Возможно, вы могли бы рассказать нам о том, как устроен ваш стек ...

1
ответ дан 4 December 2019 в 17:09

На самом деле это зависит от вашего приложения .

Не имеет смысла размещать прокси Varnish перед веб-сервером Nginx, если вы обслуживаете только статические файлы.

Что касается ускорения ваших PHP-приложений, вы уже можете использовать Nginx (см. fastcgi_cache ) для применения уровня кэширования. Это могло быть уже простым решением для получения дополнительной скорости.

Однако есть случаи, когда использование Varnish может быть полезным:

  • возможность очищать кэшированный контент
  • сложные правила кеширования
  • использование ESI (включая границу)

Пример

Приложение PHP имеет для отправки правильных заголовков кэширования.

server {
    listen          80;
    listen          [::]:80;
    server_name     www.example.com;

    root    /var/www/www.example.com/htdocs;

    # CVE 2013-4547
    if ($request_uri ~ " ") {
            return 444;
    }

    location / {
            try_files $uri index.php?url=$uri&$query_string;
    }

    location ~ \.php$ {
            # global access log is off but for PHP we'd like to log
            access_log                      /var/log/nginx/access.log vhosts;

            # use fastCGI
            fastcgi_keep_conn               on;
            fastcgi_pass                    unix:/var/run/php5-fpm.sock;
            fastcgi_index                   index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  SCRIPT_NAME      $fastcgi_script_name;
            fastcgi_buffer_size             128k;
            fastcgi_buffers                 256 16k;
            fastcgi_busy_buffers_size       256k;
            fastcgi_temp_file_write_size    256k;

            # activate caching for fastCGI
            fastcgi_cache                   php;
            fastcgi_cache_bypass            $cookie_PHPSESSID; # do not cache if session is active
            fastcgi_cache_key               "$scheme$request_method$host$request_uri"; # cache key
            fastcgi_cache_use_stale         error timeout invalid_header http_500; # stale on error
            fastcgi_cache_valid             200 301 720s; # cache only HTTP-200 and HTTP-301 responses and define a TTL
            fastcgi_pass_header             Set-Cookie; # allow Set-Cookie header
            fastcgi_no_cache                $cookie_PHPSESSID; # do not cache if session is active

            # include system wide fastCGI settings (Ubuntu/Debian style)
            include                         fastcgi_params;
    }
}
0
ответ дан 4 December 2019 в 17:09

Теги

Похожие вопросы