Ich benutze nginx als Frontserver, ich habe die CSS-Dateien geändert, aber nginx bedient immer noch die alten.
Ich habe versucht, nginx neu zu starten, ohne Erfolg, und ich habe gegoogelt, aber keinen gültigen Weg gefunden, dies zu löschen.
Einige Artikel sagen, wir können nur das Cache-Verzeichnis löschen: var/cache/nginx
aber es gibt kein solches Verzeichnis auf meinem Server.
Was sollte ich jetzt tun?
proxy_cache
?cache
und sie nicht in den Konfigurationsdateien gefundenAntworten:
Ich hatte genau das gleiche Problem - ich habe meinen Nginx in Virtualbox ausgeführt. Ich hatte kein Caching aktiviert. Aber sieht aus wie
sendfile
wurde aufon
innginx.conf
und, die das Problem verursacht wurde. @kolbyjack hat es oben in den Kommentaren erwähnt.Als ich abschaltete
sendfile
, funktionierte es gut.Das ist weil:
Es hängt mit diesem Fehler zusammen: https://www.virtualbox.org/ticket/12597
quelle
Sie können den Code auch Datei für Datei umgehen / neu zwischenspeichern
Als Bonus können Sie diesen Header zurückgeben, um zu sehen, ob Sie ihn aus dem Cache (wird 'HIT' zurückgeben) oder vom Inhaltsserver (wird 'BYPASS' zurückgeben) erhalten haben.
Verwenden Sie zum Ablaufen / Aktualisieren der zwischengespeicherten Datei curl oder einen anderen Restclient, um eine Anforderung an die zwischengespeicherte Seite zu senden.
Dadurch wird eine neue Kopie des Elements zurückgegeben und das, was sich im Cache befindet, ersetzt.
quelle
Sofern Sie keine Cache-Zone über proxy_cache_path konfiguriert und dann verwendet haben (z. B. in einem Standortblock), wird über: proxy_cache nichts zwischengespeichert.
Wenn Sie dies jedoch getan haben, reicht es laut dem Autor von nginx aus , einfach alle Dateien aus dem Cache-Verzeichnis zu entfernen.
Einfachster Weg:
find /path/to/your/cache -type f -delete
quelle
[crit] 1640#0: unlink() "/path/to/cache/85/1cc5328db278b328f2c200c65179ad85" failed (2: No such file or directory)
Sie können das Cache-Verzeichnis von nginx löschen oder eine bestimmte Datei durchsuchen:
Und löschen Sie nur eine Datei, um sie durch Nginx zu aktualisieren.
quelle
grep -lr 'http://mydomain.pl/css/myedited.css$' /var/nginx/cache/*
grep: /var/nginx/cache/*: No such file or directory
Ich verwende Ubuntu 14.04.3 LTS und nginx / 1.8.1. Irgendeine Idee?sudo find /var/nginx/cache -type f -exec grep -l '/css/myedited.css' {} \;
Diese Frage enthält zwei Antworten.
Verwenden:
Z.B:
quelle
Ich fand das nützlich
Suchen und wenn gefunden, dann löschen.
quelle
Bei meiner Nginx-Installation musste ich gehen zu:
und
in diesem Verzeichnis. Wenn Sie den Pfad zu Ihrer Nginx-Installation kennen und das Cache-Verzeichnis finden, funktioniert dies möglicherweise auch für Sie. Seien Sie sehr vorsichtig mit dem
rm -rf
Befehl. Wenn Sie sich im falschen Verzeichnis befinden, können Sie Ihre gesamte Festplatte löschen.quelle
Ich führe ein sehr einfaches Bash-Skript aus, das alle 10 Sekunden benötigt, um den Job zu erledigen, und sende mir eine E-Mail, wenn ich fertig bin.
quelle
Ich hatte auch dieses Problem.
Meine Domain verwendet cloudflare.com für DNS (großartiger Service!). Aha! Da war es:
cloudflare.com -> Caching -> Cache löschen (ich habe alles gelöscht ) Das hat mein Problem gelöst!
quelle
Wir haben einen sehr großen Nginx-Cache (Gigabyte), den wir gelegentlich löschen müssen. Ich habe ein Skript ausgearbeitet, das den Cache sofort löscht (soweit es Nginx betrifft) und dann das Cache-Verzeichnis entfernt, ohne die Hauptanwendung für Festplatten-E / A zu beeinträchtigen.
Zusammenfassend:
Hier ist das auf Ubuntu 16.04 LTS zugeschnittene Skript mit dem Cache unter
/mnt/nginx-cache
:Und falls es hilfreich ist, hier ist die Nginx-Konfiguration, die wir verwenden:
quelle
Überprüfen Sie für diejenigen, bei denen andere Lösungen nicht funktionieren, ob Sie einen DNS-Dienst wie CloudFlare verwenden . Aktivieren Sie in diesem Fall den "Entwicklungsmodus" oder verwenden Sie das Tool "Cache leeren".
quelle
Bitte beachten Sie, dass proxy_cache_bypass Ihnen eine Welt voller Verletzungen bereiten kann, wenn Ihre App keine zwischenspeicherbare Antwort für diese bestimmte Anforderung zurückgibt, bei der Sie sie auslösen.
Wenn zum Beispiel die App ein Cookie mit jedem ersten Anfrage sendet, dann ein Skript , das Trigger über curl proxy_pass_bypass wird wahrscheinlich das Cookie in der Antwort, und nginx wird nicht , dass die Antwort verwenden , um das zwischengespeicherte Element zu aktualisieren.
quelle
Achten Sie darauf, den richtigen Pfad richtig anzugeben.
quelle
Wenn Sie versucht haben, die Nginx-Cache-Dateien zu löschen, und diese entweder nicht oder nur zeitweise funktioniert haben, sehen Sie sich Ihre Einstellung für open_file_cache an. Wenn dies aktiviert und konfiguriert ist, um einen Dateideskriptor für längere Zeit zwischenzuspeichern, wird Nginx möglicherweise auch dann noch eine Version der zwischengespeicherten Datei anzeigen, wenn Sie sie von der Festplatte gelöscht haben. Ich musste open_file_cache_valid auf 1s reduzieren (ich bin nicht sicher, ob dies im Wesentlichen dem vollständigen Deaktivieren des Dateicaches entspricht).
quelle
Auf meinem Server befindet sich der Nginx-Cache-Ordner unter
/data/nginx/cache/
Also habe ich es nur entfernt:
sudo rm -rf /data/nginx/cache/
Hoffe das wird jedem helfen.
quelle
Wenn Sie den Cache bestimmter Dateien leeren möchten, können Sie die
proxy_cache_bypass
Direktive verwenden. Das ist wie man es machtWenn Sie nun den Cache umgehen möchten, greifen Sie auf die Datei zu, indem Sie den Parameter nocache übergeben
http://www.example.com/app.css?nocache=true
quelle
app.css?nocache=true
), während die Originaldatei (ohne Abfrage) im Cache (app.css
) verbleibt ?Sie können die Konfiguration in der Datei nginx.conf wie folgt hinzufügen.
Von oben wird in / tmp / dynamisch ein Ordner mit dem Namen "nginx_cache" erstellt, um zwischengespeicherten Inhalt zu speichern.
quelle
Es gibt eine richtige Methode, um nur Cache-Dateien zu entfernen, die mit einem KEY übereinstimmen. Beispielsweise:
Dadurch werden alle Cache-Dateien entfernt, die mit KEY "yahoo / *" übereinstimmen, wenn in nginx.conf Folgendes festgelegt wurde:
quelle
Wir verwenden Nginx zum Zwischenspeichern vieler Dinge. Das Cache-Verzeichnis enthält Zehntausende von Elementen. Um Elemente zu finden und zu löschen, haben wir einige Skripte entwickelt, um diesen Prozess zu vereinfachen. Das Repository für diese Skripte finden Sie unten:
https://github.com/zafergurel/nginx-cache-cleaner
Die Idee ist einfach. So erstellen Sie einen Index des Caches (mit Cache-Schlüsseln und entsprechenden Cache-Dateien) und suchen in dieser Indexdatei. Es hat uns wirklich geholfen, das Auffinden von Elementen (von Minuten bis zu Sekunden) zu beschleunigen und sie entsprechend zu löschen.
quelle
In meinem Fall
touch
sieht diese CSS-Datei so aus, als ob Ressourcen geändert wurden (tatsächlichtouch
ändert sich nichts an der Datei, außer der letzten Änderungszeit), sodass Browser und Nginx die neuesten Ressourcen anwendenquelle
Ich hatte ein ähnliches Problem:
Systemeinrichtung und Problem: (Auf einer Virtualbox bin ich Webhosting mit Ubuntu und Nginx - PHP-Webseitenaktualisierungen spiegelten keine Änderungen an der externen CSS-Datei wider). Ich entwickle eine Website auf einem Windows-Computer und übertrage Dateien über einen freigegebenen Ordner an nginx. Es scheint, dass Nginx keine Änderungen an der CSS-Datei aufnimmt (eine Aktualisierung in irgendeiner Weise hilft nicht. Das Ändern des CSS-Dateinamens hat nur funktioniert).
Lösung: Suchen Sie auf der VM die freigegebene Datei (in meinem Fall die CSS-Datei). Öffnen Sie mit Nano und vergleichen Sie es mit der Datei in Windows Share (sie erscheinen identisch). Speichern Sie auf der VM die freigegebene Datei mit nano. Alle Änderungen werden jetzt im Browser angezeigt. Ich bin mir nicht sicher, warum das funktioniert, aber in meinem Fall.
UPDATE: Nach dem Neustart des VM-Servers ist das Problem zurückgekehrt. Durch Befolgen der Anweisungen unter Lösung reagierte das CSS erneut auf Aktualisierungen
quelle
In meinem Fall war es der aktivierte Opcache in /etc/php/7.2/fpm/php.ini (Ubuntu):
Wenn Sie den Wert auf 0 setzen, lädt der Server die neueste Version der (PHP-) Dateien.
quelle