Puncte:1

Cum să îi spui lui nginx să onoreze memoria cache a backend-ului? uWSGI

drapel al

Există o întrebare similară dar soluția de acolo nu funcționează pentru mine.

Avem backend de anunțuri nginx și uWSGI. Avem nevoie de nginx pentru a stoca în cache răspunsul backend în funcție de ceea ce este în antetul răspunsului.

De exemplu, alerg curl -I https://example.com/api/project_data/. Folosind tcpdump Văd că backend-ul răspunde:

HTTP/1.1 200 OK
Tip de conținut: application/json
Variază: Accept, Accept-Language, Origin
Permite: GET, HEAD, OPTIONS
Cache-Control: public, max-age=3600
X-Request-ID: 6aa...0d99
X-Frame-Opțiuni: DENY
X-Content-Type-Options: nosniff
Set-Cookie: longterm_session=45c6...67; Domeniu=example.com;

Cu toate acestea, răspunsul nu este stocat în cache și nginx bate la backend de fiecare dată când este primită cererea.

Configurația nginx:

http {
        uwsgi_cache_path /var/local/nginx_cache levels=2:2 use_temp_path=off inactive=1h keys_zone=mycache:20m ;
....

  Server {
    ....
    uwsgi_cache mycache;
    uwsgi_cache_key „$request_method$request_uri”;

    locație /api/project_data/ {
      add_header X-Cache $upstream_cache_status;
      add_header Pragma „public”;
      uwsgi_pass 127.0.0.1:49002;
      include uwsgi_params;

      uwsgi_cache mycache;
      uwsgi_cache_key „$request_method$request_uri”;

    }

am duplicat uwsgi_cache doar pentru a fi pe partea sigură pentru că afaik unele directive nu sunt moștenite Locație. De asemenea, există x-cache: DOAMNA în răspunsul pe care nginx îl trimite clientului.

ce fac greșit?

Puncte:0
drapel cn

Nginx docs afirmă în mod explicit acea

Dacă antetul include câmpul âSet-Cookieâ, un astfel de răspuns nu va fi memorat în cache.

Ar trebui să faceți ca aplicația dvs. să nu trimită cookie-uri pentru ca răspunsul corespunzător să fie stocat în cache, din motive evidente - cookie-urile sunt date suplimentare atât pentru client, cât și pentru server, la fel ca de ex. organism de răspuns.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.