L'URL con la query disabilita la memorizzazione nella cache?


12

Se una stringa di query è collegata a un URL, i browser non la memorizzano mai nella cache? Ad esempio, il mio sito fa qualcosa del genere:

/radar-picture.png?v=sep2013

E sembrerebbe che FireFox non memorizzi mai nella cache quella foto; viene scaricato su ogni richiesta.

Vorrei che FireFox lo memorizzasse nella cache, per tutto il tempo che vuole. Voglio forzare il download solo quando il v=parametro è cambiato.


1
Immagino che potresti farlo, se cambi semplicemente il nome del file stesso invece della query. Quindi ora il nome del file sarebbe radar-picture-sep2013.pnge quando cambierà ad un certo punto in futuro sarebbe radar-picture-jan2014.png. Puoi configurare la durata massima del PNG a un anno, quindi a meno che il nome del file non cambi, il browser può caricare l'immagine memorizzata nella cache per un lungo periodo.
vstm,

Risposte:


3

L'aggiunta di una coppia chiave / valore della stringa di query a una risorsa statica (come un'immagine, CSS o JavaScript) può causare problemi di memorizzazione nella cache .

In particolare, poiché hai citato Firefox , il tuo problema potrebbe essere correlato a una "collisione della cache", in cui:

Le funzioni hash della cache del disco di Firefox possono generare collisioni per URL che differiscono solo leggermente, vale a dire solo su confini di 8 caratteri. Quando hash delle risorse sulla stessa chiave, solo una delle risorse viene mantenuta nella cache del disco; le risorse rimanenti con la stessa chiave devono essere recuperate al riavvio del browser. Pertanto, se si utilizza l'impronta digitale o si sta generando altrimenti URL di file in modo programmatico, per massimizzare la percentuale di riscontri nella cache, evitare il problema della collisione dell'hash di Firefox assicurando che l'applicazione generi URL che differiscono su limiti di oltre 8 caratteri.

[Fonte: https://developers.google.com/speed/docs/best-practices/caching ]


7
Che cos'è il "confine di 8 caratteri" e COME posso evitare questa collisione? Come dovrebbero essere i miei URL allora?
Andrew,

2

Questa risposta su StackOverflow afferma che alcuni browser reagiscono in modo diverso premendo H nella barra degli indirizzi anziché facendo clic su un collegamento quando l'URL ha una stringa di query: https://stackoverflow.com/a/85386/1145388

Durante il test, assicurati di fare clic sui link anziché aggiornare o premere Invio nella barra degli indirizzi.


2
Penso che la risposta su StackOverflow potrebbe essere obsoleta. Quando inserisco una stringa di query su fogli di stile style.css?v=sep2013e 150 KiB background-image:url('bgimage.jpg?v=sep2013');, la navigazione nel sito (facendo clic sui collegamenti o digitando la barra degli indirizzi) è molto lenta in FireFox.
Mr. Smith,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.