In Nginx kann uns die differenzierte Cache-Konfiguration dabei helfen, das Cache-Verhalten flexibler zu steuern, um den Anforderungen verschiedener URLs oder Anforderungen gerecht zu werden. Um eine differenzierte Cache-Konfiguration zu erreichen, können wir den „location“-Block von Nginx und zugehörige Cache-Anweisungen verwenden. Das Folgende ist eine gängige Konfigurationsmethode für den differenziellen Cache:
Zunächst gehen wir davon aus, dass es zwei Arten von URLs gibt: Die eine ist eine statische Ressourcen-URL, die zwischengespeichert werden muss, und die andere ist eine dynamische Inhalts-URL, die bei jeder Anfrage den neuesten Inhalt vom Backend-Server abrufen muss. Wir werden jeweils unterschiedliche Cache-Konfigurationen für diese beiden URL-Typen durchführen.
- Statische Ressourcen-Cache-Konfiguration:
Unter der Annahme, dass unsere statischen Ressourcen-URLs alle/static/
mit beginnen und wir diese URLs zwischenspeichern möchten, können wir Nginx wie folgt konfigurieren:
server {
listen 80;
server_name example.com;
location /static/ {
# 开启缓存
proxy_cache my_static_cache;
# 缓存有效期为1天
proxy_cache_valid 200 302 1d;
# 缓存大小限制
proxy_cache_max_size 100m;
# 关闭缓存的Cookie
proxy_ignore_headers "Cache-Control" "Set-Cookie";
# 在缓存过期时,异步更新缓存,避免缓存失效时用户等待
proxy_cache_use_stale updating;
# 向后端服务器获取资源
proxy_pass http://backend_server;
}
# 其他配置...
}
In der obigen Konfiguration haben wir proxy_cache
die Direktive verwendet, um das Caching zu aktivieren und proxy_cache_valid
die Cache-Gültigkeitsdauer auf 1 Tag festzulegen. Legen Sie gleichzeitig proxy_cache_max_size
eine Cache-Größenbeschränkung fest, um zu verhindern, dass der Cache zu viel Speicherplatz beansprucht. Wir verwenden proxy_ignore_headers
Direktiven auch, um die Auswirkungen auf den Cache zu ignorieren, da statische Ressourcen im Allgemeinen nicht von Headern wie „Cache-Control“ und „Set-Cookie“ betroffen sind. Verwenden Sie schließlich proxy_cache_use_stale
Anweisungen, um den Cache asynchron zu aktualisieren, wenn er abläuft, um zu vermeiden, dass der Benutzer wartet.
- Konfiguration für dynamische Inhalte wird nicht zwischengespeichert:
Für die URL von dynamischen Inhalten, die wir nicht zwischenspeichern möchten, können wir sie als Standortblock konfigurieren, der nicht zwischenspeichert:
server {
listen 80;
server_name example.com;
location / {
# 不开启缓存
proxy_no_cache 1;
# 立即向后端服务器获取最新内容
proxy_cache_bypass 1;
# 不会缓存任何数据
proxy_cache off;
# 向后端服务器获取最新内容
proxy_pass http://backend_server;
}
# 其他配置...
}
proxy_no_cache
In der obigen Konfiguration haben wir Anweisungen und Anweisungen verwendet, proxy_cache_bypass
um sicherzustellen, dass Anfragen in diesem Standortblock nicht zwischengespeichert werden, sondern sofort den neuesten Inhalt vom Backend-Server erhalten. Gleichzeitig proxy_cache off
wird der Cache über Anweisungen abgeschaltet, um unnötige Cache-Verarbeitungen zu verhindern.
Durch die oben differenzierte Cache-Konfiguration können wir das Verhalten des Nginx-Cache flexibler entsprechend den Merkmalen und Anforderungen der URL steuern und die Leistung und Benutzererfahrung der Website verbessern. In tatsächlichen Anwendungen können komplexere differenzierte Cache-Konfigurationen basierend auf spezifischen Geschäftsanforderungen durchgeführt werden.