【发布时间】:2013-05-28 14:02:24
【问题描述】:
我们有一个网站(实际上是一个应用程序生成器),它在不同的场景中呈现了许多用户控件,
有一天经理决定在主页添加Output cache,
好的,一切都很好,请求响应非常快!
但另一方面,这种缓存有一些麻烦:
假设我们有一个填充了一些实体的InsertForm User control,和一个显示实体列表的ListForm User Control,那么你可以猜到会发生什么,实体填充正确但没有显示在列表中,为什么?因为输出缓存。
那我们要把这个用户控件从缓存中排除,经过一番搜索,我们找到了Donut Caching,看起来很好,
我们使用Add dynamically server control to Substitution
大多数用户控件的实现依赖于所有页面生命周期,其中一些在 Init 中执行,一些在 Load 中,一些在 Render >,所以在大多数情况下我们都有一个占位符,我们要做的是:
并且在 PreRender 中删除 placeHolder 中的所有控件以防止重复:
在某些情况下我们有一个很好的结果但是在某些实现中我们又遇到了麻烦,所有的Request 替换为HttpContext.Current.Request 并且所有的Sessions 都转换为字段,但在某些情况下像使用@ 987654332@ 我们仍然有例外:Request does not exist in this context。
而在绑定事件中我们又遇到了麻烦,事件没有正确绑定,比如向导的下一步按钮点击事件。
毕竟我填错了,也许这在这种情况下不实用,
你怎么看?
我们还有其他选择吗?
或者所有这些问题都可以解决?请问有什么建议吗?
【问题讨论】:
标签: asp.net outputcache dynamic-usercontrols donut-caching partial-caching