Ich habe eine einseitige Anwendung (angle-js), die über IIS bereitgestellt wird. Wie verhindere ich das Zwischenspeichern von HTML-Dateien? Die Lösung muss durch Ändern des Inhalts in index.html oder web.config erreicht werden, da der Zugriff auf IIS über eine Verwaltungskonsole nicht möglich ist.
Einige Optionen, die ich derzeit untersuche, sind:
IIS ist Version 7.5 mit .NET Framework 4
Das Hinzufügen der folgenden Elemente zur web.config-Lösung funktionierte in Chrome, IE, Firefox und Safari:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<location path="index.html">
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-cache" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
</configuration>
Dies stellt sicher, dass der Cache-Control
- Header auf no-cache
Gesetzt ist, wenn index.html
Angefordert wird.
Für .NET Core habe ich Folgendes verwendet.
app.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = context =>
{
if (context.File.Name == "index.html" ) {
context.Context.Response.Headers.Add("Cache-Control", "no-cache, no-store");
context.Context.Response.Headers.Add("Expires", "-1");
}
}
});
Gutschrift an Wie deaktiviere ich den Browser-Cache in ASP.NET Core RC2?
Wenn Sie Ihre HTML-Dateien bereitstellen, können Sie eine zufällige Abfragezeichenfolge anhängen. Dadurch wird verhindert, dass der Browser die alten Versionen verwendet, auch wenn sich die Datei im Browser-Cache befindet.
/index.html?rnd=timestamp
Die andere Option ist das Hinzufügen der No-Cache-Einstellung auf der Ebene IIS. Dies fügt Cache-Control: no-cache in die Antwort ein, wodurch die Browser angewiesen werden, die Datei nicht zwischenzuspeichern. Es funktioniert ab IIS 7.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- Note the use of the 'location' tag to specify which
folder this applies to-->
<location path="index.html">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="DisableCache" />
</staticContent>
</system.webServer>
</location>
</configuration>
<meta http-equiv="cache-control" content="no-cache, must-revalidate, post-check=0, pre-check=0">
Das Hinzufügen der folgenden Elemente zur web.config-Lösung funktionierte in Chrome, IE, Firefox und Safari:
Dies stellt sicher, dass der Cache-Control-Header auf no-cache gesetzt ist, wenn index.html angefordert wird.