我有一个ascx控件,它工作得很好。它包含在一个更大的aspx页面中。我想把它放到片段缓存中,所以我在顶部添加了适当的CacheOutput指令。但是,现在基础aspx.cs文件上的控件在第二次加载页面时将控制变量设置为null。我在网上找到了一些地方,它说这会发生,但我也没有找到访问控件的解决方案。
我遗漏了什么?
另外,我可以控制它的缓存位置吗?我可以让它缓存在浏览器缓存中而不是服务器上吗?
发布于 2011-10-27 04:47:28
问题#1:输出缓存只将HTML结果存储在服务器上。如果要交互或运行用户控件中的任何代码,则不能使用完整的输出缓存。您可能希望查看较低级别的缓存,可能是数据库或对象缓存,或者在此缓存中嵌入另一个用户控件,该控件本身使用完整的输出缓存,但外部用户控件不再使用。
问题#2:“我能控制它的缓存位置吗?”如果您使用输出缓存,则不可以。这总是意味着服务器上的缓存。但是,有很多不同级别的缓存。你只能在浏览器中缓存一个完整的超文本传输协议响应:一个超文本标记语言页面,一个CSS文件,等等。如果你想在浏览器中只缓存页面的一部分,而让页面的其余部分是动态的,你将不得不用某种JavaScript来做这件事。或者通过HTML5本地存储,或者通过具有适当缓存头的AJAX,或者以304 Not Modified响应作为响应。
附注:在ASP.Net世界中,术语“片段缓存”更多地被称为“部分缓存”。
所以小贴士:这是两个问题,将来真的应该单独问两个问题。此外,这里有许多方法可以解决您的问题;如果您提供了更多关于您正在做的事情和您试图解决的性能问题的上下文,我们可以提供更具体的答案。
https://stackoverflow.com/questions/7404739
复制相似问题