NGINX-Proxy-Caching – Cache-Buster-Variable in Abfragezeichenfolge – kann sie ignoriert werden?

NGINX-Proxy-Caching – Cache-Buster-Variable in Abfragezeichenfolge – kann sie ignoriert werden?

Wir haben die folgende URL, die wir per Proxy-Cache speichern möchten:

file.php?parameter=one&paramater2=two&r=EPOCHTIMESTAMP

Der Abfragezeichenfolgenparameter „parameter“ variiert zwischen den Anforderungen. Das Gleiche gilt für „parameter2“.

Der Abfragezeichenfolgenparameter r ist ein Zeitstempel, den wir verwenden, um sicherzustellen, dass der Client keinen zwischengespeicherten (auf der Clientseite) Inhalt bereitstellt. Auch bekannt als „Cache-Buster“. Ja, wir verwenden auch alle entsprechenden „Don't-Cache“-Header h.

Nun möchten wir einige dieser Anfragen über nginx im Proxy-Cache speichern. Ist es möglich, nginx anzuweisen, den Abfrageparameter r zu ignorieren, aber alle anderen zu verwenden, wenn ein Cache-Schlüssel für den Eintrag festgelegt wird? Wenn wir den Parameter r nicht ignorieren können, ist der Proxy-Cache von nginx nutzlos, da jeder Cache-Schlüssel eindeutig ist.

Danke.

Antwort1

Wir haben eine Lösung für diese Frage gefunden.

Die richtige Methode hierfür besteht darin, einen Cache-Schlüssel mithilfe von Nginx- $arg_...Variablen zu erstellen. $arg_...enthält Abfragezeichenfolgenparameter. Im obigen Beispiel würden wir also $arg_parameterund $arg_parameter2innerhalb des Cache-Schlüssels verwenden.

Das Ergebnis nginx.confsieht dann so aus:

http {
  ...
    server {
      location / {
         ...
         proxy_cache_key $scheme$proxy_host$uri$is_args$arg_parameter$arg_parameter2;
      }
    }
  ...
}

Beachten Sie, dass Abfrageparameter, die einen Bindestrich enthalten, wie z. B. data-*Parameter, mit der Syntax nicht funktionieren $arg_paramName. Eine Problemumgehung mit Lua finden Sie unterdieser Beitrag.

verwandte Informationen