使用 IIS7 進行輸出記憶體 - 如何用於動態 aspx 頁面?
我有一個 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 ->切換到功能視圖
現在 點兩下輸出記憶體,點擊**添加…**並進行必要的記憶體更改