Bu yazıda, Nginx’in FastCGI önbelleği ile WordPress hızlandırma ayarlarına son rötuşları yapacağız. Bu teknik, önceki ayarlamadan itibaren devam eder; bu nedenle, bu noktaya ulaşmak için lütfen önceki makalelere bakın.
Optimizasyonu tamamlamak için hazırlanalım. Bu sefer Nginx tarafından geliştirilen sayfa önbellekleme ara katmanı, FastCGI’yi kuracağız.
Nginx FastCGI Yükleme / Kurulum
Bu özelliği kullanmak için WordPress’de kalıcı bağlantıları etkinleştirmeniz gerekir. Kontrol Paneline gidin, “Ayarlar” ve ardından “Kalıcı Bağlantılar”ı tıklayın. SEO ve kullanıcı dostu linkler elde etmeniz için “Yazı ismi” şeması kullanmanızı öneririm.
SSH terminaline dönün ve Nginx ayar dosyasını düzenleyin. nginx.conf dosyasında değişiklikler yapacağız.
nano /etc/nginx/nginx.conf
Son hali aşağıdaki gibi olmalı.
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 3; gzip on; server_names_hash_bucket_size 128; fastcgi_cache_path /var/cache/nginx/wordpress levels=1:2 keys_zone=wpcache:30m max_size=512M inactive=600m; #burayi ilave ettik include /etc/nginx/conf.d/*.conf; }
Ardından, temel önbellek koşullarını default.con dosyasına ekleyelim.
nano /etc/nginx/conf.d/default.conf
Konfigürasyon dosyasında include fastcgi_params; satırının altında kalan işaretleri silerek aşağıdaki kodu sağ tuş ile yapıştırın ve CTRL + X ile kayıt edin.
set $do_not_cache 0; if ($request_method = POST) { set $do_not_cache 1; } if ($query_string != "") { set $do_not_cache 1; } if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $do_not_cache 1; } if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.ph$ set $do_not_cache 1; } fastcgi_cache wpcache; fastcgi_cache_key "$request_method:$scheme://$host$request_uri"; fastcgi_cache_valid 200 60m; fastcgi_no_cache $do_not_cache; fastcgi_cache_bypass $do_not_cache; add_header X-F-Cache $upstream_cache_status; } }
FastCGI önbellek sonuçlarını test edelim
Nginx’i yeniden başlatalım.
systemctl restart nginx
Test için hazırız. Yaptığımız optimizasyonu daha üst seviyede test etmek için istekleri 100’den 10000’e, eşzamanlı istekleri 10’dan 100’e artırıyoruz. Sonuçlar inanılmaz
ab -n 10000 -c 100 http://herhangi.net/
Sonuçlar
Concurrency Level: 100 Time taken for tests: 5.294 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 535020075 bytes HTML transferred: 532590000 bytes Requests per second: 1888.79 [#/sec] (mean) Time per request: 52.944 [ms] (mean) Time per request: 0.529 [ms] (mean, across all concurrent requests) Transfer rate: 98685.67 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 3 1.0 3 7 Processing: 3 50 237.6 15 3521 Waiting: 3 47 235.6 12 3520 Total: 4 52 237.8 17 3526 Percentage of the requests served within a certain time (ms) 50% 17 66% 18 75% 18 80% 19 90% 31 95% 99 98% 424 99% 463 100% 3526 (longest request)
Testimde saniye başı istek 1888.79. Son haline göre kıyaslama yapmak gerekirse değişim aşağıdaki gibi.
Optimize Konusu | Sayfa yükleme süresi (varsayılanla karşılaştırıldığında) |
Saniye başı istek (Requests per second) |
---|---|---|
Varsayılan kurulum | 471 ms | 5.25 |
APC | 299 ms (Değişim %36.51) | 7.92 |
OPcache+APCu | 276 ms (Değişim %41.40) | 8.27 |
MariaDB Ayarları | 240 ms (Değişim %49.04) | 8.99 |
Tuned, gzip, MPM+php-fpm | 100 ms (Değişim %78.76) | 8.92 |
PHP 7+OPCache+APCu | 95 ms (%79.83) | 14.94 |
FastCGI | 95 ms (%79.83) | 1888.79 (%35876.95 Artış) |
Seriyi bu şekilde noktalıyoruz. Soru ve görüşlerinizi yorum alanından paylaşarak fikir alışverişi sağlayabiliriz. Okuduğunuz için teşekkür ederim.
Serinin tüm bölümleri:
- WordPress Performans Sunucusu Kurulum Rehberi
- CentOS 7 LAMP, WordPress ve PHP APC Kurulumu [1]
- OPcache, APCu Kurulumu ve MariaDB Optimizasyonu [2]
- Gzip, Apache Tuned, MPM+php-fpm Kurulum ve Ayarlar [3]
- PHP 7, OPCache ve APCu ile 3 Kat Hızlı WordPress [4]
- Nginx Kurulumu ile WordPress Sitemizi Hızlandırıyoruz [5]
- > FastCGI Kurulumu ile Işık Hızında WordPress [6]
Doruk merhaba, abartmadan söylüyorum 20 yıllık yazılım hayatımda gördüğüm en güzel hazırlanmış yazı dizisiydi ellerine emeğine sağlık.
Ta ki son default.conf dosyasındaki hataya kadar 🙂
configteki şu satır hatalı
////
if ($request_uri ~* “(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.ph$
set $do_not_cache 1; }
////
Takılan arkadaşlar olursa aşağıdaki satırı kullanabilir.
if ($request_uri ~* (“/wp-admin.*|/cart.*|/checkout.*|/account.*|/myaccount.*|/addond.*|/store.*|/shop.*|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-ocations.php|sitemap(_index)?.xml|a-z0-9_-]+-sitemap([0-9]+)?.xml)”) { set $skip_cache 1; }
Son olarak bir sorum olacak. Serverımda Centos üzerine Directadmin kurulu, tüm bu işlemleri Directadmin kurulu serverda nasıl yapabiliriz?
Sevgiler,
Beğenmene sevindim, faydasını gördüysen ne mutlu 🙂 Kendi konfigürasyon dosyamdakileri bire bir kopyaladım ama kopyalama-taşıma aşamasında bazı değişiklikler olmuş olabilir.