Ich verwende Nginx, um meinen statischen Inhalt zu speichern. Gibt es eine Möglichkeit, die Ablauf-Header für jede Datei festzulegen, die einer bestimmten Regel entspricht? Kann ich beispielsweise den Expires-Header für alle Dateien mit der Erweiterung ".css" festlegen?
96
root
Menge. In diesem Fall sollten Sie die Direktiven zu diesem Block hinzufügen. (Ich weiß, dies ist 2y spät, aber für zukünftige Bürger)Die
location
RichtlinieDie
expires
Richtliniequelle
Ich habe nicht genug Ruf, um zu kommentieren, warum die akzeptierte Antwort dazu führen würde, dass die Dateien nicht mehr angezeigt werden, aber ich habe es herausgefunden und möchte helfen!
Kurzfassung:
Stellen Sie sicher, dass Sie ein Stammverzeichnis für Ihren Standortblock auf Bildern angegeben haben, wenn Sie kein globales Verzeichnis festgelegt haben!
Lange Version unten:
Zuallererst war meine Methode zum Implementieren dieser Lösung der folgenden Antwort sehr ähnlich , in der Sie die Regel schreiben (wie in der akzeptierten Antwort):
in eine Datei img-cache.conf
und fügen Sie diese Datei dann in Ihre
server {...}
Direktive ein.Mein Beispiel für somesite.com in meinem für Websites verfügbaren Ordner:
Auf diese Weise können Sie den Image-Caching-Speicherortblock mehreren Sites hinzufügen, die Sie möglicherweise ausführen.
Zweitens habe ich eine Situation, in der mein / var / www / zwei Ordner enthält, die ich als public_html zulasse - sicher und trainierend. Daher muss ich in der Server-Direktive meiner Site bestimmte Standortblöcke erstellen, in denen diese Ordner herausgegriffen werden.
Als solches habe ich kein globales Stammverzeichnis festgelegt .
Wenn Sie also Ihre Image-Speicherorte sperren, stellen Sie ihnen möglicherweise kein Stammverzeichnis zur Verfügung, in dem Sie nach den Images suchen können!
Meine Lösung war dann:
quelle
.conf
. Der entsprechende Ordner innginx/1.14.0 (Ubuntu)
scheint zu sein/etc/nginx/snippets/
.Sie können das Ablaufdatum auch auf Maximum setzen. Hier ist die Direktive, die ich für CSS und JS benutze.
quelle
Alle vorgenannten Lösungen werden die Möglichkeit verweigern, unterschiedliche Aliase für unterschiedliche Pfade zu haben. Um alle Ihre unterschiedlichen Cache-Verfallszeiten an einem Ort zu haben, sollten Sie nginx map auf folgende Weise verwenden.
...
Off
Deaktiviert die Zwischenspeicherungepoch
(für Unix-Epochen), führt dazu, dass die Ressource immer neu abgerufen wird, undmax
setzt das Datum auf den maximalen Wert des Browsers.Das ~ Bild / entspricht einem beliebigen Bildtyp.
Weitere Informationen zu nginx maps finden Sie unter http://nginx.org/en/docs/http/ngx_http_map_module.html .
quelle
$sent_http_content_type
ist"text/css;charset=UTF-8"
der obige Ausdruck fehlschlagen.Wenn Sie einen Ort haben, an dem all Ihre statischen Dateien gespeichert sind, ist so etwas ausreichend ...
Die akzeptierte Antwort führte dazu, dass nginx keine meiner statischen Dateien fand. Ich weiß nicht genau warum, aber das ist eine einfache Alternative.
quelle
/static
Ordner (was auch immer du als Speicherort festgelegt hast) am Ende des Alias hinzufügst (direkt danach.../files
im Beispiel).Da dies ein sehr alter Thread ist und ich ein aktuelles tolles Tutorial gefunden habe.
Vielleicht möchten Sie es ausprobieren
Implementieren von Browser-Caching mit dem Nginx-Header-Modul unter Ubuntu 16.04
quelle