Încerc să-l fac pe Apache să memoreze în cache rezultatele rulării unui script PHP scump (accesează un server terță parte care are limitarea ratei), dar se pare că dacă clientul trimite un Dacă-Modificat-De vreme ce
antet, memoria cache este ocolită.
CacheEnable disc /script.php
CacheLock activat
CacheLockMaxAge 60
CacheIgnoreHeaders Set-Cookie
# împiedică clientul să solicite în mod explicit conținut nememorizat în cache
CacheIgnoreCacheControl activat
CacheDetailHeader activat
Scriptul php setează următoarele antete în răspunsul său:
Modificat ultima dată
setat la ora curentă, de ex. Duminică, 20 iunie 2021 11:30:20 GMT
Expiră
setat la ora curentă plus 60 de secunde, de ex. Duminică, 20 iunie 2021 11:31:20 GMT
Dacă emit următoarea cerere:
GET /script.php HTTP/1.1
Gazdă: example.com
Conexiune: aproape
Apoi, memorarea în cache funcționează corect și scriptul php este rulat doar o dată pe minut, iar alte solicitări sunt servite din cache.
emitand insa urmatoarea cerere:
GET /script.php HTTP/1.1
Gazdă: example.com
Conexiune: aproape
În cazul în care se modifică: duminică, 20 iunie 2021 11:30:30 GMT
Rulează scriptul php de fiecare dată cu:
X-Cache-Detail: „cache miss: se încearcă salvarea entității” de la example.com
în răspuns.
Folosesc Apache 2.4.29 pe Ubuntu 18.04.