Bei der Verwendung von WordPress zum Erstellen einer Website wurden viele „Umwege“ unternommen, um die Leistung von WordPress zu optimieren und den Zugriff auf die Website zu beschleunigen. Wenn der Zugriff auf die Website langsam ist und der CPU-Speicher erschöpft ist, denke ich als Erstes an ein Upgrade der Serverkonfiguration. Später stelle ich fest, dass einige skrupellose VPS-Händler die Ressourcen hinter den Kulissen stark einschränken und es wirklich schädlich ist, dafür mehr zu bezahlen Aktualisierung.

Die größte Erfahrung ist, dass ich mit der gleichen Konfiguration die gleiche Website von verschiedenen VPS-Händlern betreibe. Bei den gleichen Verkehrsbedingungen läuft der eine reibungslos und der andere bleibt hängen Sie müssen die Bewertungen anderer Personen sorgfältig vergleichen, insbesondere die Leistungsbewertungen von VPS-Hosts, sonst geben Sie leicht viel Geld aus.

Später, als ich WordPress optimierte, konzentrierte ich mich auf die Caching-Plugins, die ich zuvor verwendet habe, unter anderem WordPress Super Cache, WP Fastest Cache, W3 Total Cache, cos-html-cache, Cachify... Im Allgemeinen , ich habe es installiert. Das Zwischenspeichern des Plug-Ins beschleunigt zwar immer noch, bringt aber auch viele Probleme mit sich.

Zum Beispiel komplexe Konfigurationen, generierte Regeln, Plug-In-Konflikte und die Unfähigkeit, plötzlichen Datenverkehr zu bewältigen, was bedeutet, dass die Verwendung von Caching-Plug-Ins immer noch nicht in der Lage ist, die Auswirkungen von großem Datenverkehr zu bewältigen. Schließlich habe ich auf Empfehlung eines Freundes den Nginx-Cache fastcgi_cache aktiviert und Nginx direkt zum Generieren des Caches für die Seite verwendet. Die Effizienz ist viel höher als die Verwendung des PHP-Cache-Plug-Ins, das besonders für die Verwendung auf VPS mit kleinen Geräten geeignet ist Konfigurationen.

Wordpress aktiviert die Nginx-Cache-Beschleunigungsmethode fastcgi_cache – Beispiel für eine Nginx-Konfiguration

Weitere Erfahrungsartikel zum Thema WordPress und Serveroptimierung finden Sie hier:

  1. Der Linux-PHP-FPM-Optimierungsprozess benötigt viel Speicher und verursacht keine Speicherprobleme
  2. WordPress fügt Alipay, Produktionsbeispiele für WeChat-Belohnungsschaltflächen und einen Paypal.me-Belohnungslink hinzu
  3. Tutorial zur grundlegenden Syntax und Bedienung von Linux Crontab-Befehlen für geplante Aufgaben – VPS/Server-Automatisierung

PS: Aktualisiert am 19. Dezember 2018 Die mit WordPress gelieferte On-Site-Suche ist nicht nur langsam, sondern kann auch nicht nach weiteren Schlüsselwörtern suchen. Wir können selbst eine erstellen oder eine Drittanbieter-Suche zum Einbetten verwenden es in WP: Verbesserte Website-Suche – Baidu, benutzerdefinierte Google-Suche und selbst erstellte Elasticsearch-Suche.

PS: Aktualisiert am 29. September 2019, Aufgrund des von Google entwickelten Serveroptimierungsartefakts ngx_pagespeed ist ein vollständiger Satz von Optimierungstools wie verzögertes Laden von Bildern, adaptives WebP, JS- und CSS-Optimierung sowie Bildintegration integriert Optimierung: PageSpeed ​​Server-Optimierungsartefakt – Nginx stellt das ngx_pagespeed-Modul bereit und erlebt beschleunigte Effekte.

1. Installieren Sie das Nginx ngx_cache_purge-Modul

Webseite:

  1. HTTP://labs.Frick.com/files/

1.1 LNMP

Wenn Sie das LNMP-Ein-Klick-Installationspaket verwenden, bearbeiten Sie die Datei lnmp.conf im Verzeichnis des lnmp-Installationspakets, fügen Sie –add-module=/root/ngx_cache_purge-2.3 in den einfachen Anführungszeichen von Nginx_Modules_Options="  hinzu und speichern Sie und das Upgrade von Nginx ist mit einem Klick installiert, und andere Module können ebenfalls darauf verweisen.

Für ngx_cache_purge-2.3 müssen Sie das Installationspaket von der offiziellen Website frickle.com herunterladen und entpacken. Die neueste Version ist 2.3.

1.2 Oneinstack

Wenn Sie das OneinStack-Panel verwenden, können Sie das Modul ngx_cache_purge mit dem folgenden Befehl kompilieren.

# nginx -V 2>&1 | grep -o ngx_cache_purge 查看ngx_cache_purge是否安装,没有数据表示未安装
cd /root/oneinstack/src
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
tar xzf ngx_cache_purge-2.3.tar.gz

#以下几个安装包都是Oneinstack自带的,不同的版本可能会不同,请根据情况调整
tar xzf nginx-1.14.0.tar.gz
tar xzf pcre-8.42.tar.gz
tar xzf openssl-1.0.2o.tar.gz
cd /root/oneinstack/src/nginx-1.14.0

nginx -V #查看nginx编译参数,最后加上--add-module=../ngx_cache_purge-2.3
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.0.2o --with-pcre=../pcre-8.42 --with-pcre-jit --with-ld-opt=-ljemalloc --add-module=../ngx_cache_purge-2.3

make  #编译
mv /usr/local/nginx/sbin/nginx{,_`date +%F`}  #备份nginx
cp objs/nginx /usr/local/nginx/sbin
nginx -V 2>&1 | grep -o ngx_cache_purge
# 显示ngx_cache_purge表示已经安装成功

Wenn Sie Nginx -V zum Anzeigen von Kompilierungsparametern und zum Hinzufügen von Add-Modulen verwenden, achten Sie darauf, gemäß Ihren eigenen Nginx-Kompilierungsparametern zu arbeiten, d. h. die ursprünglichen Nginx-Parameter beizubehalten und Add-Module hinzuzufügen. Zum Beispiel meins:

2. Nginx aktiviert das Fastcgi_cache-Caching – Konfigurationsbeispiel

2.1  Konfigurationsbeispiel

Unten poste ich direkt ein Beispiel für die Nginx-Aktivierung des fastcgi_cache-Cache. Die detaillierten Anweisungen lauten wie folgt:

#路径需要提前创建好
fastcgi_cache_path /tmp/nginx-cache levels=1:2 keys_zone=WORDPRESS:250m inactive=1d max_size=500m;
fastcgi_temp_path /tmp/nginx-cache/temp;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
#忽略一切nocache申明,避免不缓存伪静态等
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

server {
   listen 80;
   listen 443 ssl http2;
  …………………此部省略……………………
  
   set $skip_cache 0;
   #post访问不缓存
   if ($request_method = POST) {
            set $skip_cache 1;
        }   
   #动态查询不缓存
   if ($query_string != "") {
            set $skip_cache 1;
        }   
   #后台等特定页面不缓存(其他需求请自行添加即可)
   if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|/zhuye/|/wzfou.com/||/question/|/bbs/|/dongtai/|/haoyou/|/qun/|index.php|sitemap(_index)?.xml") {
            set $skip_cache 1;
        } 
   #对登录用户、评论过的用户不展示缓存
   if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
            set $skip_cache 1;
        }
   #这里请参考你网站之前的配置,特别是sock的路径,弄错了就502了!		
   location ~ [^/].php(/|$) {
    #fastcgi_pass remote_php_ip:9000;
    fastcgi_pass unix:/dev/shm/php-cgi.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    #新增的缓存规则
    fastcgi_cache_bypass $skip_cache;
    fastcgi_no_cache $skip_cache;
    add_header X-Cache "$upstream_cache_status From $host";
    add_header Cache-Control  max-age=0;
    add_header Nginx-Cache "$upstream_cache_status";
    add_header Last-Modified $date_gmt;
    add_header X-Frame-Options SAMEORIGIN; # 只允许本站用 frame 来嵌套
    add_header X-Content-Type-Options nosniff; # 禁止嗅探文件类型
    add_header X-XSS-Protection "1; mode=block"; # XSS 保护
    etag  on;
    fastcgi_cache WORDPRESS;
    fastcgi_cache_valid 200 301 302 1d;
  }
  
  #缓存清理配置(可选)
  location ~ /purge( /.*) { #为防止转义,请去掉{ /之间的空格
    allow 127.0.0.1;
    #此处填写你的服务器IP
    allow 89.208.xxx.xxx;
    deny all;
    #请注意此处的WORDPRESS要与上面的keys_zone保持一致
    fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
    }
  …………………此部分省略……………………	

}

2.2  Anweisungen

Lokal oder Erinnerung? In fastcgi_cache_path und fastcgi_temp_path würde jemand vorschlagen, es auf den Speicherpfad festzulegen, zum Beispiel: /dev/shm/nginx-cachelevels=1:2keys_zone=WORDPRESS:100m inactive=60m;, wenn Ihr If Da die Festplatten-E/A sehr langsam ist, wird die Verwendung dieser Methode empfohlen. Schließlich ist die Lese- und Schreibgeschwindigkeit des Speichers sehr hoch.

add_header Cache-Control Wenn der dynamische Inhalt in Echtzeit aktualisiert werden muss, kann er auf 0 gesetzt werden, andernfalls kann die Zeit länger eingestellt werden.

3. Nginx Helper-Plugin installieren – Cache automatisch aktualisieren

Mit der oben genannten Methode haben wir den fastcgi_cache-Cache konfiguriert. Als nächstes müssen wir das Problem der automatischen Aktualisierung der Nginx-Cache-Seite lösen, wenn WordPress neue Kommentare und neue Artikel hat. Suchen Sie direkt nach dem Nginx Helper-Plug-In zum Herunterladen, richten Sie es dann ein, aktivieren Sie es zunächst und wählen Sie lokale Dateien als Löschmethode aus.

Das Plug-in bietet auch andere Einstellungen, beispielsweise ob der Nginx-Cache aktualisiert werden soll, wenn neue Artikel und neue Kommentare veröffentlicht werden.

Da der vom Plug-In-Autor definierte Cache-Pfad /var/run/nginx-cache ist und wir den Cache-Pfad möglicherweise an die tatsächliche Situation des Servers anpassen, führt der Unterschied im Cache-Pfad dazu, dass das Plug-In funktioniert Sie können die Cache-Datei nicht finden und löschen!

Die Lösung besteht darin, den folgenden Code zu wp-config.php im WordPress-Stammverzeichnis hinzuzufügen:

//根据实际情况定义缓存的存放路径
define( 'RT_WP_NGINX_HELPER_CACHE_PATH','/tmp/wpcache');

Wenn Sie feststellen, dass der Code, der den Pfad oben definiert, nicht funktioniert, können Sie den Rat des „natürlichen“ Bloggers nutzen:

Die erste besteht darin, das Plug-in zu ändern und den Pfad im Plug-in in Ihren eigenen zu ändern. Die zweite besteht darin, Softlinks /var/run/nginxcache und /tmp/wpcache zu verwenden

3. Vorschau des Nginx fastcgi_cache-Effekts

Nachdem wir Nginx fastcgi_cache aktiviert haben, können wir sehen, dass es in den Header-Header-Informationen des Browsers gefunden wurde.

Für Seiten, die so konfiguriert wurden, dass sie nicht zwischengespeichert werden, zeigt Nginx fastcgi_cache direkt BYPASS an.

Darüber hinaus wird Nginx fastcgi_cache auch direkt für angemeldete Benutzer und Benutzer, die Kommentare gepostet haben, BYPASS ausführen.

Gleichzeitig ist die von Nginx fastcgi_cache generierte Cache-Datei auch im Cache-Pfad unseres Servers zu sehen.

Wenn Sie feststellen, dass Benutzer, die Sie kommentiert haben, immer noch den Cache verwenden, sollte WP sich keine Cookies merken. Fügen Sie einfach den folgenden Code zu functions.php hinzu.

add_action('set_comment_cookies','coffin_set_cookies',10,3);
function coffin_set_cookies( $comment, $user, $cookies_consent){
   $cookies_consent = true;
   wp_set_comment_cookies($comment, $user, $cookies_consent);
}

4. Zusammenfassung

Das Aktivieren des Fastcgi_cache-Cachings in Nginx ist sehr wichtig, um die Reaktionsgeschwindigkeit von Webseiten zu beschleunigen und Serverressourcen zu sparen. Das folgende Bild ist das Testergebnis von alibabacloud.com. Es ist ersichtlich, dass die Tragfähigkeit des Servers nach der Aktivierung des Cachings erheblich verbessert wurde.

Wenn wzfou.com die Site durchsucht, um den Fastcgi_cache-Cache zu aktivieren, wird festgestellt, dass Cache-Control-Informationen zur Nginx-Konfigurationsdatei hinzugefügt werden, diese jedoch immer nicht wirksam werden. HTTP-Header-Informationen enthalten immer die folgenden Informationen:

Cache-Kontrolle: No-Store, No-Cache, Must-Revalidate, Post-Check=0, Pre-Check=0 und Pragma: No-Cache,

Nach der Untersuchung liegt das Problem im PHP.ini-Einstellungsteil von session.cache_limiter in den One-Click-Paketen LNMP und Oneinstack. Der Standardwert ist nocache und wir müssen ihn auf „none“ setzen.

Hinterlasse eine Antwort