webentwicklung-frage-antwort-db.com.de

Deaktivieren der Zwischenspeicherung von HTML-Dateien für Einzelseitenanwendungen, die über IIS bereitgestellt werden

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

27
Andrew

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.

37
Andrew

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?

14
ttugates

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>
6
govin
  <meta http-equiv="cache-control" content="no-cache, must-revalidate, post-check=0, pre-check=0">
5
Sagar Jadhav

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.

0
Shubham