Pergunta

Pergunta em duas partes (as peças estão intimamente relacionadas): com a política de ETAG padrão que o IIS7 emprega, por que não vemos a interação IF-Match/304 enquanto navegamos pelas páginas?

Os cabeçalhos retornaram para uma solicitação de cache vazio, por exemplo, são:

Content-Type    image/png
Last-Modified   Thu, 03 Dec 2009 15:51:56 GMT
Accept-Ranges   bytes
Etag    "a8a0628a3074ca1:0"
Server  Microsoft-IIS/7.0
X-Powered-By    ASP.NET
Date    Tue, 22 Dec 2009 19:47:36 GMT
Content-Length  1780

... e, no entanto, acessos subsequentes à página não geram uma viagem de ida e volta para a imagem?

Além disso, o padrão ApplicationHost Arquivo para o IIS7 tem o seguinte (1):

   <caching enabled="true" enableKernelCache="true">
   </caching>

Faz enablekernelcache = 'true' estender a todos os arquivos estáticos, liberando a necessidade de registrar extensões explicitamente para conceder CacheuntilChange como a política do kernel (2):

<caching>
  <profiles>
    <add extension=".gif" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
    <add extension=".png" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
    <add extension=".js" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
    <add extension=".css" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
    <add extension=".jpg" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
    <add extension=".jpeg" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
  </profiles>
</caching>

(1) %Systemroot % System32 inetsrv config ApplicationHost.config

(2) http://labs.episerver.com/en/blogs/per/archive/2009/3/configuring-cache-expiration-on-iis-7/

Foi útil?

Solução

O manuseio de ETAGs e o-IF-NONE-Match / If-modificado-uma vez depende de um pouco de dependente do navegador. Você pode tentar alguns navegadores diferentes e ver o que acontece - em geral, se você não definir um tempo de validade explícito, eu esperaria ver os 304, como você disse.

Para cache de kernel, ele está ativado para arquivos estáticos por padrão. Para ajudar a ver o que está acontecendo, achei útil executar o seguinte comando:

netsh http show cachestate

Isso mostrará informações sobre os arquivos que estão atualmente no cache.

Lembre -se de que os arquivos normalmente precisam ser referenciados algumas vezes dentro de uma determinada janela de tempo antes que o kernel os cache.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top