Știu Variază: Cookie
este nu prea placut, deoarece provoacă memorarea în cache a fiecărei variante de cookie-uri pe care un utilizator ar putea raporta. Pe de altă parte, fără el, a trebuit să folosesc Cache-Control: fără cache
să spun serverului meu de stocare în cache NGINX să omite în întregime conținutul de stocare în cache ar putea să aibă un utilizator conectat (în fiecare pagină a site-ului meu, de altfel, deoarece există o casetă de cont în partea de sus a paginii).
Trimit cookie-uri numai dacă utilizatorul se conectează, astfel încât majoritatea vizualizărilor de pagină ar beneficia de memorarea în cache. Aș dori să o restrâng astfel încât să existe doar două variante: o versiune în cache pentru utilizatorii a căror „varianță” este că au Nu cookie-uri și o versiune non-cache pentru cei care au cookie-uri (de exemplu, utilizatorul este autentificat și are cookie-uri de autentificare).
Dacă adaug „Vary: Cookie” la programul meu Perl, există vreo modalitate de a-i spune lui NGINX că în acest caz ar trebui să acorde atenție doar dacă un sesiune ID
cookie există sau nu? Ceva de genul -- pentru a face un pseudo-antet -- Variază: Cookie('sessionId')
? Dacă există o modalitate de a implementa acest lucru în antetul produs de script-ul pe care NGINX l-ar respecta atunci, cred că aș prefera asta decât să-l pun în configurația NGINX, dar orice soluție ar fi apreciată.
Nu sunt pe deplin sigur cum să testez dacă voi face NGINX să înnebunească cu memorarea în cache, dar mă întreb dacă ceva în acest sens ar putea funcționa: la un vizualizator care nu este conectat, scriptul trimite Variază: Cookie
, dar asupra unui spectator care este conectat, trimite atât acel antet, cât și Cache-Control: fără cache
. NGINX ar înțelege acest lucru pentru a-i spune să memoreze în cache primul răspuns, dar nu și varianta? Sau aș strica ceva în moduri pe care nu le prind acum?
Actualizați: Iată o mostră a unuia dintre blocurile mele de server:
Server {
server_name myservername.tld
asculta 80;
Locație / {
proxy_cache $PROXY_CACHE;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m;
timeout eroare proxy_cache_use_stale http_429 http_500 http_502 http_503 http_504;
proxy_cache_background_update on;
proxy_cache_revalidate on;
proxy_cache_min_uses 1;
proxy_cache_lock activat;
proxy_pass $scheme://$APACHE_PROXY_REQ_IP:$APACHE_PROXY_REQ_PORT;
}
}