web-dev-qa-db-fra.com

Comment désactiver la mise en cache du fichier HTML d'application d'une seule page servi via IIS?

J'ai une application d'une seule page (angular-js) qui est servie via IIS. Comment empêcher la mise en cache des fichiers HTML? La solution doit être obtenue en modifiant le contenu dans index.html ou web.config, car l'accès à IIS via une console de gestion n'est pas possible.

Voici quelques options que j'étudie actuellement:

IIS est la version 7.5 avec .NET Framework 4

27
Andrew

L'ajout des éléments suivants dans la solution web.config a fonctionné sur Chrome, IE, Firefox et 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>

Cela garantira que le Cache-Control l'en-tête est défini sur no-cache lors de la demande index.html.

37
Andrew

Pour .NET Core, j'ai utilisé ce qui suit.

        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");
                }
            }
        });

Crédit à Comment désactiver le cache du navigateur dans ASP.NET core rc2?

14
ttugates

Lorsque vous diffusez vos fichiers html, vous pouvez ajouter une chaîne de requête aléatoire. Cela empêchera le navigateur d'utiliser les anciennes versions même si le fichier se trouve dans le cache du navigateur.

/index.html?rnd=timestamp

L'autre option consiste à ajouter le paramètre sans cache au niveau IIS. Cela ajoute Cache-Control: no-cache dans la réponse qui indique aux navigateurs de ne pas mettre en cache le fichier. Cela fonctionne à partir de 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

L'ajout des éléments suivants dans la solution web.config a fonctionné sur Chrome, IE, Firefox et Safari:

Cela garantira que l'en-tête Cache-Control est défini sur no-cache lors de la demande d'index.html.

0
Shubham