ASP.NET片段缓存 - 第二轮控制为空

时间:2011-09-13 15:47:52

标签: asp.net caching

我有一个ascx控件可以正常工作。它包含在一个更大的aspx页面中。我想把它放在片段缓存中,所以我在顶部添加了相应的CacheOutput指令。但是,现在对底层aspx.cs文件的控制使控件变量在第二次加载页面时设置为null。我在网上发现了一些地方,它说这会发生,但我也找不到访问控件的解决方案。

我错过了什么?

另外,我可以控制缓存的位置吗?我可以在浏览器缓存中而不是在服务器上进行缓存吗?

1 个答案:

答案 0 :(得分:1)

问题#1:输出缓存仅将HTML结果存储在服务器上。如果您想要在用户控件中进行交互或运行任何代码,则可能无法使用完整输出缓存。您可能希望查看较低级别的缓存,可能是数据库或对象缓存,或者将另一个用户控件嵌入到使用完全输出缓存本身但外部用户控件不再使用的用户控件中。

问题#2:“我可以控制缓存的位置吗?”如果使用输出缓存,则不。这总是意味着服务器上的缓存。但是,有许多不同级别的缓存。您只能在浏览器中缓存完整的HTTP响应:单个HTML页面,CSS文件等。如果您只想在浏览器中缓存部分页面,但页面的其余部分是动态的,则必须用某种JavaScript做到这一点。 HTML5本地存储,或通过具有适当缓存标头的AJAX或使用304 Not Modified响应进行响应。

附注:术语“片段缓存”在ASP.Net世界中通常被称为“部分缓存”。

SO提示:这是两个问题,将来应该被问为两个问题。 此外,有很多方法可以解决您的问题;如果你提供了更多关于你正在做的事情以及你想要解决的性能问题,我们可以提供更具体的答案。