gpt4 book ai didi

magento - Nginx + PHP-FPM + Magento 的 FastCGI 缓存配置

转载 作者:可可西里 更新时间:2023-11-01 13:28:30 25 4
gpt4 key购买 nike

有些人可能已经注意到最近的 Optimizing Magento For Peak Performance Magento 日前发布的白皮书。尽管它主要是为 EE 用户编写的,但我相信我们也可以使用社区版的大部分技巧。

在仔细阅读之后,我继续将他们建议的 Nginx + fastcgi/proxy 缓存配置与我的 Magento 标准虚拟主机配置合并,并进行了一些小的改进。这是我想出的:

fastcgi_cache_path /tmp/fcgi levels=1:2 keys_zone=MAGE:64m max_size=128m inactive=10h;

server {
listen 99999; ## Nginx port
server_name domain.com www.domain.com;
root /www/magento; ## App folder
index index.php;

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
access_log off;
log_not_found off;
}

location /index {
try_files $uri @fcgi_nocache;
}

location /checkout {
try_files $uri @fcgi_nocache;
}

location / {
try_files $uri @fcgi_cache;
if ($cookie_frontend) { return 413; }
if ($cookie_CUSTOMER_AUTH) { return 413; }
if ($request_method = POST ) { return 413; }
error_page 413 = @fcgi_nocache;
}

# Deny access to hidden files
location ~ (/(app/|includes/|/pkginfo/|var/|report/config.xml)|/\.svn/|/.hta.+) {
deny all;
}

# Forward paths like /js/index.php/x.js to relevant handler
location ~ .php/ {
rewrite ^(.*.php)/ $1 last;
}

# Manually purge pages
location ~ /purge(/.*) {
fastcgi_cache_purge MAGE "$scheme$request_method$host$1";
}

location @fcgi_cache {
#if (!-e $request_filename) { rewrite / /index.php last; } ## Catch 404s that try_files miss
fastcgi_pass unix:/var/spool/phpfpm.sock; ## php-fpm socket
include fastcgi_params;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 60;
fastcgi_read_timeout 60;
fastcgi_buffer_size 4k;
fastcgi_buffers 512 4k;
fastcgi_busy_buffers_size 8k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors off;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param SCRIPT_NAME /index.php;
#fastcgi_keep_conn on; # NGINX 1.1.14
fastcgi_temp_path /tmp/fcgi2 1 2;

fastcgi_cache MAGE;
#fastcgi_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri"; ## Original
fastcgi_cache_key "$scheme$request_method$host$request_uri$http_if_modified_since$http_if_none_match";
#fastcgi_cache_lock on 5s; # NGINX 1.1.12
fastcgi_cache_valid 200 301 302 304 1h;
fastcgi_hide_header "Set-Cookie";

if ($http_cookie !~ "X-Store=1" ) {
add_header Set-Cookie "X-Store=1; path=/";
}

fastcgi_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
fastcgi_cache_min_uses 1;
fastcgi_cache_valid 30m;
fastcgi_cache_use_stale updating error timeout invalid_header http_500;
fastcgi_cache_bypass $cookie_EXTERNAL_NO_CACHE $cookie_CUSTOMER_AUTH;
fastcgi_no_cache $cookie_EXTERNAL_NO_CACHE $cookie_CUSTOMER_AUTH;

#add_header X-Cache-Status $upstream_cache_status; # Test
}

location @fcgi_nocache {
#if (!-e $request_filename) { rewrite / /index.php last; } ## Catch 404s that try_files miss
fastcgi_pass unix:/var/spool/phpfpm.sock; ## php-fpm socket
include fastcgi_params;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 60;
fastcgi_read_timeout 60;
fastcgi_buffer_size 4k;
fastcgi_buffers 512 4k;
fastcgi_busy_buffers_size 8k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors off;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param SCRIPT_NAME /index.php;
#fastcgi_keep_conn on; # NGINX 1.1.14
fastcgi_temp_path /tmp/fcgi2 1 2;

if ($http_cookie !~ "X-Store=1" ) {
add_header Set-Cookie "X-Store=1; path=/";
}
#add_header X-Cache-Status $upstream_cache_status; # Test
}

}

经过一些测试,通过 AB 得到的结果似乎令人印象深刻,但我真的不确定它们是否准确以及缓存系统是否按预期完全工作。有人可以详细说明@fcgi_cache 和@fcgi_nocache 以及cookie 背后的实际逻辑是什么吗?谁实际获得了缓存页面?当 PHP-FPM 关闭时,陈旧的缓存似乎不起作用(?)。我对收到的不同标题感到有点困惑和困惑。

有什么建议吗??

最佳答案

这种类型的配置对 magento 绝对没用,他们只用它来获得最大的“虚拟”吞吐量,而且这种配置逻辑甚至在几个地方中断。你最好配置打洞全页缓存扩展,它会重新插入你的动态 block ,并使你的站点始终保持在缓存中。还必须有新添加的产品和数量变化等的缓存刷新。

关于magento - Nginx + PHP-FPM + Magento 的 FastCGI 缓存配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13177965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com