我有一个RetrieveBlob.aspx获取一些查询stringvariables并返回一个资产。 每个url对应一个独特的资产。
在RetrieveBlob.aspx中设置一个cachingconfiguration文件。 在Web.Config中,configuration文件看起来像(在system.web标签下:
<caching> <outputCache enableOutputCache="true" /> <outputCacheSettings> <outputCacheProfiles> <add duration="14800" enabled="true" varyByParam="*" name="AssetCacheProfile" /> </outputCacheProfiles> </outputCacheSettings> </caching>
好的,这工作正常。 当我在RetrieveBlob.aspx后面的代码中放置一个断点时,它会在第一次触发,而其他所有时间都不触发。
现在,我扔掉cachingconfiguration文件,而是我在我的Web.Config下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>
现在caching不再工作了。 我究竟做错了什么? 是否可以在System.WebServer的caching标签下configurationdynamicaspx页面的cachingconfiguration文件?
我已经尝试添加这样的东西:
<add extension="RetrieveBlob.aspx" policy="CacheForTimePeriod" kernelCachePolicy="CacheForTimePeriod" duration="00:00:30" varyByQueryString="assetId, assetFileId" />
但它不起作用。
一个url的例子是:
HTTP:// {服务器} / {应用} /trunk/RetrieveBlob.aspx?assetId=31809&assetFileId=11829
您在system.web下的web.config中启用的<caching>标记是.net特定的,IIS 7将不会处理该caching内容。 现在,您在system.webServerconfiguration的<caching>由IIS 7模块处理,应该可以工作。
如果你想为像RetrieveBlob.aspx这样的特定页面启用caching,你需要在<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中的文件级别身份validation ,但是您可以对输出caching执行相同的操作。
去网站 (在我们的案例的默认网站)
点击内容视图
右键单击文件,例如RetrieveBlob.aspx – > 切换到function视图
双击输出caching
现在,单击添加…并进行必要的caching更改