© 2020 Velumisphere AB - All rights reserved
Smedjegatan 9 392 39 Kalmar
Nginx innehåller en FastCGI-modul som har direktiv för cachning av dynamiskt innehåll som serveras från WordPress. Att ställa in detta tar bort behovet av ytterligare lösningar för sid-cachningar som Varnish eller WordPress plugins. Innehåll kan också uteslutas från cachning baserat på förfrågningsmetoden, URL, cookies eller någon annan servervariabel. Man vill tex inte cacha det som ligger bakom /wp-admin eller om man har en cookie som säger att man är inloggad.
När någon besöker din WordPress-webbplats måste din server köra PHP och fråga din databas för att leverera den slutliga HTML-sidan till dina besökares webbläsare. Caching fungerar genom att lagra den slutliga HTML-sidan och automatiskt leverera den till besökare, istället för att dynamiskt återge ditt innehåll för varje besök.
Genom att eliminera denna backend-bearbetning kan cachning påskynda din webbplats och minska belastningen på din server.
Med Nginx kan du göra något liknande via sin fastcgi_cache-modul men på servernivå. Det vill säga att Nginx kan servera ditt cachade innehåll direkt utan att behöva involvera PHP eller WordPress.
Däremot, med ett cacheplugin, måste varje begäran fortfarande hanteras av PHP på applikationsnivå. Ett caching-plugin eliminerar fortfarande mycket av arbetet och är definitivt positivt för din webbplats, men det kräver också fler CPU-cykler än att använda Nginx för att hantera begäran på servernivå. Därför är NGINX cache det bästa alternativet för WordPress och används av det mest moderna webbhotellen för wordpress.
Redigera huvudkonfigen för nginx
sudo nano /etc/nginx/nginx.conf
I http avsnittet lägg till:
fastcgi_cache_path /usr/share/nginx/fastcgi_cache levels=1:2 keys_zone=WORDPRESS:100m max_size=10g inactive=60m use_temp_path=off; fastcgi_cache_key "$scheme$request_method$host$request_uri";
Nu är cachen aktiverad i nginx men vi behöver också ställa in per site att och hur den ska användas det gör vi genom att redigera filen under conf.d.
sudo nano /etc/nginx/conf.d/din-hemsida.conf
Hitta stycket som ser ut såhär: location ~ .php$
Lägg till detta inom location blocket
fastcgi_cache WORDPRESS; fastcgi_cache_valid 200 301 302 60m; fastcgi_cache_use_stale error timeout updating invalid_header http_500 http_503; fastcgi_cache_min_uses 1; fastcgi_cache_lock on; fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; add_header X-FastCGI-Cache $upstream_cache_status;
Spara filen och testa konfigurationen genom att köra
sudo nginx -t
Om allt ser bra ut reloadar vi NGINX konfigurationen
sudo service nginx reload eller sudo systemctl reload nginx
curl -I http://www.din-hemsida.com
I svaret bör du se X-FastCGI-Cache header. HIT om du testar två gånger. Första gången så är sidan ocachad och nästa ska den vara cachad.
Lägg detta ovanför location blocket med location ~ .php$ i /etc/nginx/conf.d/din-hemsida.conf
set $skip_cache 0; # POST requests and urls with a query string should always go to PHP if ($request_method = POST) { set $skip_cache 1; } if ($query_string != "") { set $skip_cache 1; } # Don't cache uris containing the following segments if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-..php|^/feed/|/tag/./feed/|index.php|/.sitemap..(xml|xsl)") { set $skip_cache 1; } # Don't use the cache for logged in users or recent commenters if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; }
På Velumi använder vi NGINX fastcgi cache eller nginx redis cache i alla våra paket färdigkonfigurerat och optimerat med automatisk rensning när du uppdaterar en sida i WordPress. Kontakta oss i chatten om du har några frågor eller om du vill veta mer.
Kolla in hur vi kan hjälpa er med WordPress Webbhotell