
fastcgi_cache
Ich wollte auf meinem nginx 1.5.8 Setup wie gezeigt ausprobierenHier.
Im Abschnitt http der Nginx-Konfiguration habe ich Folgendes hinzugefügt:
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=microcache:10m
max_size=1000m inactive=60m;
Im Serverbereich:
set $cache_uri $request_uri;
# POST requests and urls with a query string should always go to PHP
if ($request_method = POST) {
set $cache_uri 'null cache';
}
if ($query_string != "") {
set $cache_uri 'null cache';
}
# Don't cache uris containing the following segments
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.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)")
{
set $cache_uri 'null cache';
}
# Don't use the cache for logged in users or recent commenters
if ($http_cookie ~*
"comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") {
set $cache_uri 'null cache';
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi.conf;
fastcgi_pass unix:/var/run/php5-fpm.sock;
##
# Fastcgi cache
##
set $skip_cache 1;
if ($cache_uri != "null cache") {
add_header X-Cache-Debug "$cache_uri $cookie_nocache
$arg_nocache$arg_comment $http_pragma $http_authorization";
set $skip_cache 0;
}
fastcgi_cache_bypass $skip_cache;
fastcgi_cache_key
$scheme$host$request_uri$request_method;
fastcgi_cache_valid any 8m;
fastcgi_cache_bypass $http_pragma;
fastcgi_cache_use_stale updating error timeout
invalid_header http_500;
}
Ich habe an den Benutzer (und die Gruppe) www-data chown
gesendet und es an gesendet . Ich habe nginx neu gestartet, aber der Ordner ist immer leer. Ist das normal? Wie kann ich testen, ob es funktioniert?/var/cache/nginx
chmod
775
fastcgi_cache
Antwort1
Sie müssen auch an einer Stelle Ihrer Konfiguration Folgendes festlegen fastcgi_cache microcache;
. Der Standardwert null
deaktiviert das Caching:http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache
Um dies zu überprüfen, prüfen Sie, ob der X-Cache-Debug
Header in der Antwort vorhanden ist. Wenn nicht, sind Sie zu restriktiv, was das Zwischenspeichern betrifft. Nginx berücksichtigt auch den Cache-Control
Header, den Sie in der HTTP-Antwort festlegen – Sie können ihn in Ihren Anwendungen verwenden/überprüfen, anstatt zu viele Bedingungen für das Zwischenspeichern hinzuzufügen.
Antwort2
Ja, das ist normal.
Nirgendwo in Ihrer Konfiguration haben Sie diefastcgi_cache
Richtlinie.
Wenn nicht angegeben, ist der implizite Wert off
. Wenn Sie möchten, dass eine Zwischenspeicherung erfolgt, sollten Sie fastcgi_cache microcache;
irgendwo angeben, wo der microcache
Teil der Name Ihres keys_zone
Absenders ist fastcgi_cache_path
.