Cache de saída com o IIS7 - Como para uma página aspx dinâmica?

1

Eu tenho um RetrieveBlob.aspx que obtém algumas variáveis de string de consulta e retorna um ativo. Eeach url corresponde a um recurso exclusivo.

No RetrieveBlob.aspx, um perfil de cache está definido. No Web.Config, o perfil se parece com (sob a tag system.web:

<caching>
  <outputCache enableOutputCache="true" />
  <outputCacheSettings>
    <outputCacheProfiles>
      <add duration="14800" enabled="true" varyByParam="*" 
           name="AssetCacheProfile" />
    </outputCacheProfiles>
  </outputCacheSettings>
</caching>

Ok, isso funciona bem. Quando eu coloco um ponto de interrupção no código por trás de RetrieveBlob.aspx, ele é acionado na primeira vez, e todas as outras vezes não.

Agora, eu jogo fora o perfil do cache e, em vez disso, estou tendo isso no meu Web.Config em System.WebServer:

<caching>
  <profiles>
    <add extension=".swf" policy="CacheForTimePeriod"
         kernelCachePolicy="CacheForTimePeriod" duration="00:08:00" />
    <add extension=".flv" policy="CacheForTimePeriod" 
         kernelCachePolicy="CacheForTimePeriod" duration="00:08:00" />
    <add extension=".gif" policy="CacheForTimePeriod" 
         kernelCachePolicy="CacheForTimePeriod" duration="00:08:00" />
    <add extension=".png" policy="CacheForTimePeriod"    
         kernelCachePolicy="CacheForTimePeriod" duration="00:08:00" />
    <add extension=".mp3" policy="CacheForTimePeriod" 
         kernelCachePolicy="CacheForTimePeriod" duration="00:08:00" />
    <add extension=".jpeg" policy="CacheForTimePeriod" 
         kernelCachePolicy="CacheForTimePeriod" duration="00:08:00" />
    <add extension=".jpg" policy="CacheForTimePeriod" 
         kernelCachePolicy="CacheForTimePeriod" duration="00:08:00" />
  </profiles>
</caching>

Agora o armazenamento em cache não funciona mais. O que estou fazendo de errado? É possível configurar na tag de cache do System.WebServer um perfil de cache para uma página Dynamic aspx?

Eu já tentei adicionar algo assim:

<add extension="RetrieveBlob.aspx" policy="CacheForTimePeriod" 
     kernelCachePolicy="CacheForTimePeriod" duration="00:00:30" 
     varyByQueryString="assetId, assetFileId" />

Mas isso não funciona.

Um exemplo de um URL é:

link

    
por Lieven Cardoen 27.03.2010 / 19:12

1 resposta

4

A tag <caching> que você ativou no web.config em system.web é específica .net e o IIS 7 não abordará esse conteúdo de armazenamento em cache. Agora, o <caching> que você configurou em system.webServer é manipulado pelo módulo IIS 7 e deve funcionar.

Se você quiser ativar o armazenamento em cache para uma página específica, como RetrieveBlob.aspx, será necessário adicioná-lo na tag <location> , por exemplo:

<location path="RetrieveBlob.aspx">
    <system.webServer>
        <caching>
            <profiles>
                <add extension=".aspx" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" duration="00:00:30" varyByQueryString="assetId, assetFileId" />
            </profiles>
        </caching>
    </system.webServer>
</location>

A maneira mais fácil de fazer isso é usando a interface do usuário do IIS 7. Aqui está o meu blog, que fala sobre Arquivo nível de autenticação no IIS 7 , mas você pode fazer o mesmo para o Cache de Saída.

Acesse o site da Web (site padrão no nosso caso)
Clique em Visualização de conteúdo
Clique com o botão direito no arquivo, por exemplo RetrieveBlob.aspx - > Mudar para a vista de funcionalidades
Clique duas vezes em Cache de saída
Agora, clique em Adicionar ... e faça as alterações necessárias no cache

    
por 29.03.2010 / 22:41