2010-03-27 86 views
1

我有一個RetrieveBlob.aspx,它獲取一些查詢字符串變量並返回一個資產。 Eeach url對應一個獨特的資產。使用IIS7輸出緩存 - 如何爲動態aspx頁面?

在RetrieveBlob.aspx中設置了緩存配置文件。在Web.Config配置文件看起來像(在system.web標記下):

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

好吧,這工作正常。當我在RetrieveBlob.aspx後面的代碼中放置一個斷點時,它會在第一次觸發,而其他時間不觸發。

現在,我扔掉了緩存配置文件,而是我System.WebServer下有這個在我的web.config:

<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> 

現在緩存不工作了。我究竟做錯了什麼?是否可以在System.WebServer的緩存標記下配置動態aspx頁面的緩存配置文件?

我已經嘗試添加這樣的事情:

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

但它不工作。

一個URL的一個例子是:

HTTP:// {服務器}/{應用} /trunk/RetrieveBlob.aspx?assetId=31809 & assetFileId = 11829

回答

1

轉到:

IIS7 -> Add Cache Rule -> Advanced -> Check Query String Variables 

然後在文本框中"assetId,assetFileId"