Iis-7

使用 IIS7 進行輸出記憶體 - 如何用於動態 aspx 頁面?

  • January 5, 2017

我有一個 RetrieveBlob.aspx,它獲取一些查詢字元串變數並返回一個資產。每個 url 對應一個獨特的資產。

在 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://{server}/{application}/trunk/RetrieveBlob.aspx?assetId=31809&assetFileId=11829

<caching>您在 web.config 中啟用的標記system.web是 .net 特定的,IIS 7 不會處理該記憶體內容。現在,<caching>您已配置的system.webServer內容由 IIS 7 模組處理並且應該可以工作。

如果您希望為特定頁面(如 RetrieveBlob.aspx)啟用記憶體,則需要將其添加到<location>標記下,例如:

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

使用 IIS 7 UI 完成此操作的最簡單方法。這是我的部落格,其中討論了IIS 7 中的文件級身份驗證,但您可以對輸出記憶體執行相同的操作。

轉到網站(在我們的例子中為預設網站)

點擊內容視圖

右鍵點擊文件,例如RetrieveBlob.aspx ->切換到功能視圖
現在 點兩下輸出記憶體

,點擊**添加…**並進行必要的記憶體更改

引用自:https://serverfault.com/questions/126914