您能否在代码中找出 .NET 中的页面/控件上设置了哪些 OutputCache VaryByParams 值?
给定页面上这样的 outputcache
指令,
<%@ OutputCache Duration="3600" VaryByParam="Id" %>
我如何知道代码中的 VaryByParam
值是什么。
HttpContext.Current.Response.Cache.VaryByParams
对象包含一个私有 _parameters
字典和一个内部 IsVaryByStar
属性,但不会反映到该对象中我相当不愿意这样做,我无法访问它们。是否有任何标准方法可以发现在特定请求上设置了哪些输出缓存指令?
Given an outputcache
directive like this on a page
<%@ OutputCache Duration="3600" VaryByParam="Id" %>
How can I tell what the VaryByParam
value is in code.
The HttpContext.Current.Response.Cache.VaryByParams
object contains a private _parameters
Dictionary and an internal IsVaryByStar
property, but without reflecting into the object which I'm fairly loath to do, I can't access them. Is there any standard way to discover what outputcache directives have been set on a particular request?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不相信会有另一种方法来枚举参数。除了枚举参数之外,您可能还需要注意通配符(
"*"
)参数。所以我认为最简单的方法是使用反射。另一方面,我不确定需要这种要求的确切用例。几种替代方法可能会或可能不适合您的要求,即
Response.Cache.Item
将为所有参数返回 true)。可能的替代方案是通过从基本页面类引入抽象方法来强制页面提供其缓存参数。I don't believe that there would be another way to enumerate parameters. Beside enumerating parameters, you may have to look out for wild-card(
"*"
) parameter. So I believe that the simplest way would be to use reflection.On different note, I am not certain about exact use case that needs such requirement. Couple of alternative approaches may or may not suite you requirements are
Response.Cache.Item
will return true for all parameters). Possible alternative is to force page to give its cache parameters by introducing an abstract method from base page class.