Privat gegen Öffentlich in der Cache-Kontrolle

127

Können Sie bitte ein Beispiel beschreiben, das den Unterschied zwischen öffentlicher und privater Cache-Steuerung in asp.net-Anwendungen anzeigt, die in IIS gehostet werden?

Ich habe in MSDN gelesen, dass der Unterschied der folgende ist:

Öffentlich: Legt die Cache-Steuerung fest: public, um anzugeben, dass die Antwort von Clients und gemeinsam genutzten (Proxy-) Caches zwischengespeichert werden kann.

Privat: Standardwert. Legt Cache-Control: private fest, um anzugeben, dass die Antwort nur auf dem Client und nicht von gemeinsam genutzten Caches (Proxyserver) zwischengespeichert werden kann.

Ich bin mir nicht sicher, ob ich die Vor- und Nachteile jeder Wahl vollständig verstanden habe. Ein Beispiel dafür, wann es verwendet werden soll oder nicht, wäre großartig.

Was soll ich beispielsweise tun, wenn zwei Webserver dieselbe Anwendung hosten? Gibt es etwas zu beachten, wenn ich Privat oder Öffentlich wähle?

ppolyzos
quelle

Antworten:

237

Der einzige Unterschied besteht darin, dass Sie mit Private nicht zulassen, dass Proxys die Daten zwischenspeichern, die durch sie übertragen werden. Am Ende läuft alles auf die Daten hinaus, die in den von Ihnen gesendeten Seiten / Dateien enthalten sind.

Beispielsweise könnte Ihr ISP einen unsichtbaren Proxy zwischen Ihnen und dem Internet haben, der Webseiten zwischenspeichert, um die benötigte Bandbreite zu reduzieren und die Kosten zu senken. Mit der Cache-Steuerung: privat geben Sie an, dass die Seite nicht zwischengespeichert werden soll (der Endbenutzer kann dies jedoch zulassen). Wenn Sie cache-control: public verwenden, sagen Sie, dass es für alle in Ordnung ist, die Seite zwischenzuspeichern, sodass der Proxy eine Kopie behalten würde.

Als Faustregel gilt: Wenn jeder auf diesen zugreifen kann (z. B. das Logo auf dieser Seite), ist die Cache-Steuerung möglicherweise besser: public ist möglicherweise besser, denn je mehr Personen ihn zwischenspeichern, desto weniger Bandbreite wird benötigt. Wenn es sich um etwas handelt, das mit dem verbundenen Benutzer zusammenhängt (z. B. enthält der HTML-Code auf dieser Seite meinen Benutzernamen, sodass er für andere Personen nicht nützlich ist), ist die Cache-Steuerung: privat besser, da die Proxys Daten zwischenspeichern würden Dies wird von anderen Benutzern nicht angefordert, und sie speichern möglicherweise auch Daten, die Sie nicht auf Servern speichern möchten, denen Sie nicht vertrauen.

Und natürlich sollte alles, was nicht öffentlich ist, einen privaten Cache haben. Andernfalls könnten die Daten auf einem mittleren Proxyserver gespeichert werden, auf den jeder zugreifen kann, der Zugriff darauf hat.

Salgiza
quelle
39
Der einzige Unterschied besteht darin, dass Sie mit Private nicht zulassen, dass Proxys zwischengespeichert werden ... Ich vermute, dies war ein Tippfehler. +1 auf die Antwort abgesehen davon. Es ist erwähnenswert, dass Private kein gewisses Maß an Sicherheit bietet und dennoch von Agenten in der Mitte gesehen werden kann. Es bedeutet nur, dass kein "ehrlicher" Agent es jemand anderem geben wird, anstatt eine frisch generierte Antwort.
Jon Hanna
Fest! Es ist lustig, weil ich es ein paar Mal vor dem Posten noch einmal gelesen habe, aber ich glaube, ich wusste, dass das "Nicht" da sein musste, also haben meine Gedanken es einfach hinzugefügt: D. Und ja, +1 zu Ihrem Kommentar, denn es sollte beachtet werden, dass private zwar für benutzerbezogene Daten empfohlen, aber nicht die echte Sicherheit (SSL) ersetzen.
Salgiza
Es ist so einfach, entweder "nicht" zu schreiben, wenn Sie es nicht sollten, oder es wegzulassen, wenn Sie sollten. Ich weiß, dass eine große Anzahl meiner eigenen Bearbeitungen (in verschiedenen Bereichen) denselben Tippfehler behebt.
Jon Hanna
15
Wenn wir also nichts angeben, ist das Standardverhalten "öffentlich" oder "privat"?
Pacerier
1
@Honey, aber es können mehrere Clients denselben Proxy verwenden. Wenn es in Ordnung ist, allen Clients dieselbe Antwort zu senden, ist es in Ordnung, auf Proxy-Ebene zwischenzuspeichern. Andernfalls ist es möglicherweise in Ordnung, auf dem Client zwischenzuspeichern (es gibt immer noch Fälle, in denen selbst das eine schlechte Idee ist), aber nicht auf dem Proxy.
Jon Hanna