使用 IIS7 进行输出缓存-如何使用动态 aspx 页面?

使用 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://{服务器}/{应用程序}/trunk/RetrieveBlob.aspx?assetId=31809&assetFileId=11829

答案1

<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 中的文件级别身份验证,但您可以对输出缓存执行相同的操作。

前往网站(本例中为默认网站)
单击内容视图
右键单击文件,例如检索Blob.aspx->切换到功能视图
双击输出缓存
现在,点击添加...并进行必要的缓存更改

相关内容