Încerc să adaug etag
verificarea cache-ului bazată pe o aplicație web pe care am dezvoltat-o și care rulează pe Apache prin intermediul unui proxy invers NGINX. Aplicația web este scrisă în Perl. În scriptul Perl, verific pentru $ENV{'HTTP_IF_NONE_MATCH'}
antet și apoi testați etag
în ea, dacă există. Dacă accesez aplicația prin cURL, funcționează:
timothybutler@timothys-MacBook-Pro ~ % curl -I https://server/resource/podcast/20211101.mp3
HTTP/1.1 200 OK
Server: nginx/1.21.4
Data: vineri, 12 noiembrie 2021 18:06:37 GMT
Tip de conținut: audio/mpeg
Lungimea conținutului: 16665729
Conexiune: păstrați-vă în viață
Surogat-Control: fără cache
Cache-Control: private,max-age=864000
Etichetă: „1635825322”
Dând asta etag
înapoi prin cURL, obțin rezultatul așteptat:
timothybutler@timothys-MacBook-Pro ~ % curl -H „Dacă nu se potrivește: „1635825322”” -I https://server/resource/podcast/20211101.mp3
HTTP/1.1 304 Nemodificat
Server: nginx/1.21.4
Data: vineri, 12 noiembrie 2021 18:19:29 GMT
Conexiune: păstrați-vă în viață
Cache-Control: privat, vârsta maximă=864000
Etichetă: „1635825322”
Cu toate acestea, procesul se întrerupe dacă îl încerc în Chrome. Chrome trimite rapoarte Dacă nu se potrivește: „1635825322”
ca unul dintre antete când reîmprospătează pagina, dar serverul meu nu setează HTTP_IF_NONE_MATCH
variabilă de mediu pentru acea cerere contrar celei care a venit prin cURL. Dacă arunc tot hash-ul %ENV, Dacă-Se potrivește-Niciuna
antetul și acesta etag
pur și simplu nu este prezent sub nicio formă atunci când Chrome emite cererea.