IIS/ASP.NET antwortet mit cache-control: private, für alle Anforderungen

Warum nicht alle Antworten von ASP.NET enthalten Cache-Control: private? Auch eine 404-Antwort? Gibt es etwas, das in IIS, setzt diesen Standard-Wert, und gibt es eine Möglichkeit, es zu konfigurieren? Oder ist es etwas in ASP.NET setzt diese?

Für dynamische Inhalte (das heißt, alle MVC-Ergebnisse) ich würde es nicht gefallen, werden vom browser zwischengespeichert werden, da es dynamisch ist und sich jederzeit ändern können. Der statische Inhalt befindet sich auf einem CDN, so ist nicht von IIS erfüllt.

Edit:

Zu klären, ich verstehe sehr gut, was Cache-Control: private ist der Unterschied zwischen private, public, no-store usw und wie/Wann Sie zu verwenden sind. Die Frage die ich habe ist, warum Cache-Control: private standardmäßig Hinzugefügt wird, die von IIS/ASP.NET und wie zu verhindern, dass es standardmäßig Hinzugefügt. Ich verstehe, dass es kann sinnvoll sein, cache für dynamische Seiten, aber in meiner Anwendung, die ich nicht wollen, cache für dynamische Seiten/Antworten. Zum Beispiel, ich will nicht XHR JSON-Antworten im Cache zwischengespeichert werden, da Sie die dynamischen content enthalten. Leider ist der server fügt Cache-Control: private alle Antworten automatisch, also muss ich manuell überschreiben es überall.

Wie der Fehler reproduziert werden: Öffnen Sie visual studio, und erstellen Sie eine neue ASP.NET Rahmen (ja, framework, Nein, nicht Core. Wir sind nicht in der Lage zu migrieren, die unser system core noch) - Lösung mit einem MVC-Projekt. Starten Sie jetzt das Projekt IIS Express (drücken Sie einfach die play-Taste) und benutzen Sie die F12-devtools im browser zu betrachten, der http-Antwort. Sie werden sehen, dass es enthält Cache-Control: private. Meine Frage ist, was fügt diese header und wie kann ich verhindern, dass es Hinzugefügt wird standardmäßig?

IIS/ASP.NET antwortet mit cache-control: private, für alle Anforderungen

  • Haben Sie sah in mit meta - tags? Sie können Cache-Control und Expires auf diese Weise auf der web-Seite der Ebene.
  • wie kann ein meta-tag gesetzt cache-control von einer ajax-Antwort?
  • ajax ist eine andere Geschichte. Was verwenden Sie, um Anträge zu stellen? jQuery hat eine Methode für die Einstellung der cache-control-auf ajax-Anfragen.
  • dies ist über die Antwort, nicht die Anforderung. Die Anfrage enthält kein Header mit cache-Informationen
  • Es kann hilfreich sein, um zu sehen, die Web -.config-Datei. <modules runAllManagedModulesForAllRequests="true"> im <system.webServer> verursachen kann. Wir können auch ein cache-control header-Direktive, um die <customHeaders> block in <httpProtocol>.
  • runAllManagedModulesForAllRequests auf false festgelegt ist, und Iwhen ich <add name="Cache-Control" value="no-store" /> die <customHeaders> ich am Ende mit den eher lächerlich Cache-Control: private,no-store response-header.
  • Ich weiß nicht, über ASP.NET so werde ich legen Sie einfach einen Kommentar. Beachten Sie, dass Cache-Control: public ist der einzige Weg zu markieren, den cache als öffentliche. Eine Richtlinie wie Cache-Control: max-age=3600 ist implizit private. (d.h. private ist die Standardeinstellung.)

InformationsquelleAutor Marius | 2017-11-10
Schreibe einen Kommentar