Quali intestazioni dovrei inviare per interrompere completamente tutte le richieste al server dopo che il contenuto è stato memorizzato nella cache?
Abbiamo un server a latenza molto alta (Sigh, VMWare), quindi anche l'invio di una HEADrichiesta al server richiede + 40ms.
Attualmente queste sono le intestazioni inviate / ricevute;
Prima richiesta
Il cliente invia;
GET http://dugong:8080/Rvi24mYJkxFRGNzq73PPvgWGh1j/IMG_2071.jpg HTTP/1.1
Host: dugong:8080
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20100101 Firefox/9.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Pragma: no-cache, no-cache, no-cache
Cache-Control: no-cache, no-cache, no-cache
Il server risponde;
HTTP/1.1 200 OK
Server: nginx/1.0.11
Date: Wed, 01 Feb 2012 14:51:51 GMT
Content-Type: text/plain
Vary: Accept-Encoding
Last-Modified: Tue, 31 Jan 2012 10:45:11 GMT
Content-Length: 14
Expires: Thu, 31 Jan 2013 14:51:51 GMT
Cache-Control: max-age=31536000
Quindi invia a Cache-Controle Expiresheader impostato a 365 giorni in futuro. Sfortunatamente al secondo aggiornamento richiede nuovamente l'oggetto con If-Modified-Sinceun'intestazione.
Seconda richiesta
GET http://dugong:8080/Rvi24mYJkxFRGNzq73PPvgWGh1j/IMG_2071.jpg HTTP/1.1
Host: dugong:8080
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20100101 Firefox/9.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
If-Modified-Since: Tue, 31 Jan 2012 10:45:11 GMT
Cache-Control: max-age=0
Risposta;
HTTP/1.1 304 Not Modified
Server: nginx/1.0.11
Date: Wed, 01 Feb 2012 14:58:00 GMT
Vary: Accept-Encoding
Expires: Thu, 31 Jan 2013 14:58:00 GMT
Cache-Control: max-age=31536000
Sfortunatamente a causa di software proxy stupidamente obsoleto che non possiamo usare Keep-Aliveo mettere altri server / proxy davanti all'applicazione. Inoltre, non possiamo migliorare le prestazioni del server e ridurre la latenza della rete. Ho cercato di capire quali intestazioni possiamo inviare per sbarazzarci delle 301 richieste. Ho provato a usare ETags ma questo non fa differenza, invia comunque If-modified-sinceun'intestazione. Ho anche provato a rimuovere l' Last-Modifiedintestazione, ma ciò causa solo una richiesta GET standard senza memorizzazione nella cache (controllati i registri, il server continua a ricevere richieste).
I client sono un mix di Firefox (principalmente), IE 7, 8 e (alcuni) 9, Chrome e Safari, ma questo comportamento sembra comparire in tutti i browser testati.
TL; DR;
Rete terribile, quali intestazioni dovrei inviare per dire ai clienti di non inviare mai maiIf-modified-since richieste al server per convalidare la loro cache e mantenere il contenuto nella cache fino a quando non Expiresviene soddisfatta l' intestazione?
Probabilmente mi manca qualcosa di ovvio, ma tutto ciò che provo sembra produrre gli stessi risultati.
Abbiamo un server NGINX posizionato di fronte al nostro server delle applicazioni in modo da poter aggiungere / rimuovere qualsiasi intestazione come mi pare. Il nostro proxy non supporta Keep-Alive e non è in alcun modo possibile migliorare le prestazioni della rete. A causa del terribile design del software, l'app Web carica +100 risorse per ogni caricamento della pagina (Sì, il software aziendale fa schifo) con una latenza di ~ 40-50ms per oggetto.
text/plain?