Privato vs pubblico in Cache-Control


127

Puoi descrivere un esempio che indica la differenza tra il controllo della cache pubblica e quello privato nelle applicazioni asp.net ospitate in IIS.

Ho letto in MSDN che la differenza è la seguente:

Pubblico: imposta Cache-Control: pubblico per specificare che la risposta è memorizzabile nella cache dai client e cache condivisa (proxy).

Privato: valore predefinito. Imposta Cache-Control: privato per specificare che la risposta è memorizzabile nella cache solo sul client e non tramite cache condivise (server proxy).

Non sono sicuro di aver compreso completamente i pro e i contro di ogni scelta. Un esempio su quando usarlo o meno sarebbe fantastico.

Ad esempio, cosa devo fare se ho due server Web che ospitano la stessa applicazione? C'è qualcosa a cui prestare attenzione se scelgo Privato o Pubblico?

Risposte:


237

L'unica differenza è che con Private non si consente ai proxy di memorizzare nella cache i dati che li attraversano. Alla fine, tutto si riduce ai dati contenuti nelle pagine / file che stai inviando.

Ad esempio, il tuo ISP potrebbe avere un proxy invisibile tra te e Internet, che memorizza nella cache le pagine Web per ridurre la quantità di larghezza di banda necessaria e ridurre i costi. Utilizzando il controllo della cache: privato, si specifica che non deve memorizzare nella cache la pagina (ma consentendo all'utente finale di farlo). Se usi il controllo della cache: pubblico, stai dicendo che va bene per tutti memorizzare nella cache la pagina, e quindi il proxy ne manterrebbe una copia.

Come regola generale, se è qualcosa a cui tutti possono accedere (ad esempio il logo in questa pagina) controllo della cache: il pubblico potrebbe essere migliore, perché più persone lo memorizzano nella cache, meno larghezza di banda sarà necessaria. Se è qualcosa correlato all'utente connesso (ad esempio, l'HTML in questa pagina include il mio nome utente, quindi non sarà utile a nessun altro) controllo della cache: privato sarà migliore, poiché i proxy sarebbero dati di cache che non saranno richiesti da altri utenti e potrebbero anche conservare dati che non desideri vengano conservati in server di cui non ti fidi.

E, naturalmente, tutto ciò che non è pubblico dovrebbe avere una cache privata. In caso contrario, i dati potrebbero essere archiviati in un server proxy centrale, qualora fosse possibile accedervi da chiunque ne avesse accesso.


39
L'unica differenza è che con privati si sta non permettendo deleghe da memorizzare nella cache ... Sto indovinando questo è stato un errore di battitura. +1 sulla risposta a parte questo. Vale la pena aggiungere che privato non offre alcun grado di sicurezza, può ancora essere visto dagli agenti nel mezzo. Significa solo che nessun agente "onesto" lo darà a qualcun altro invece di una risposta appena generata.
Jon Hanna,

Fisso! È divertente perché l'ho letto alcune volte prima di pubblicare, ma immagino di sapere che il "non" doveva essere lì, quindi la mia mente lo ha appena aggiunto: D. E sì, +1 al tuo commento, perché va notato che, sebbene consigliato per i dati relativi all'utente, privato non sostituirà la vera sicurezza (SSL).
salgiza,

È così facile scrivere "non" quando non dovresti o ometterlo quando dovresti. So che un gran numero delle mie auto-modifiche (in diversi campi) sta riparando lo stesso errore di battitura.
Jon Hanna,

15
Quindi, se non specifichiamo nulla, il comportamento predefinito è "pubblico" o "privato"?
Pacerier,

1
@ Ciao, ma possono esserci più client che usano lo stesso proxy. Se va bene inviare a tutti i client la stessa risposta, va bene memorizzare nella cache a livello di proxy, altrimenti potrebbe andare bene memorizzare nella cache del client (ci sono ancora casi in cui anche questa è una cattiva idea), ma non sul proxy.
Jon Hanna,
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.