it-swarm-pt.tech

Como configurar o cache de conteúdo estático por pasta e extensão no IIS7?

Eu gostaria de configurar regras no IIS7 para cache de conteúdo estático no meu site ASP.NET.

Eu vi esses artigos, que detalha como fazer isso usando o elemento <clientCache /> em web.config:

Cache de cliente <clientCache> (IIS.NET)
Adiciona Expires ou Cache Control Header ao conteúdo estático em IIS (Stack Overflow)

No entanto, essa configuração parece se aplicar globalmente a todo o conteúdo estático. Existe uma maneira de fazer isso apenas para certos diretórios ou extensões?

Por exemplo, posso ter dois diretórios que precisam de configurações de cache separadas:

/static/images
/content/pdfs

É possível configurar regras para o envio de cabeçalhos de cache (max-age, expires, etc) com base em extensões e caminhos de pastas?

Por favor note, eu devo ser capaz de fazer isso via web.config porque eu não tenho acesso ao console IIS.

139
frankadelic

Você pode definir cabeçalhos de cache específicos para uma pasta inteira em seu root web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- Note the use of the 'location' tag to specify which 
       folder this applies to-->
  <location path="images">
    <system.webServer>
      <staticContent>
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:00:15" />
      </staticContent>
    </system.webServer>
  </location>
</configuration>

Ou você pode especificar isso em um arquivo web.config na pasta de conteúdo:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:00:15" />
    </staticContent>
  </system.webServer>
</configuration>

Não conheço um mecanismo interno para segmentar tipos de arquivos específicos.

212
Kev

Você pode fazer isso por arquivo. Use o atributo path para incluir o nome do arquivo

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <location path="YourFileNameHere.xml">
        <system.webServer>
            <staticContent>
                <clientCache cacheControlMode="DisableCache" />
            </staticContent>
        </system.webServer>
    </location>
</configuration>
66
Jeff Cuscutis