缓存用户控件并以编程方式清除该缓存

我试图缓存用户控件,并在一些页面上我想缓存单个对象。 有多种方式来实现缓存,而我的头正在突破它。

我现在看到缓存选项的方式:

你有PartialCaching选项被设置为高速缓存控制30分钟,然后清除自己...你有varyByParam标识页的查询字符串参数...或其他不同的选项

但我只是无法找到一个合适的方式来添加缓存到控件,并且能够以编程方式清除缓存,当我从后端更新控件中使用的对象之一时。

你可以做HttpContext.Current.Cache.Insert(),它接受一个关键字,你可以通过使用remove来销毁缓存项目...这可以将对象保存在缓存中,但是你可以使用诸如varyByParam之类的选项吗?

我的问题被烧毁到两个:

  • 有没有办法从代码中清除特定用户控件上的缓存? 如果是的话,这可以根据不同的选项来完成吗?
  • 对象缓存如何使用Insert()对登录的用户或匿名用户做出响应?
  • 编辑:我缓存多件事情....而且我真的大吃一惊在哪个选择中提到缓存。 Cache.Insert可以通过参数改变吗?

    主要的问题是人们从后端编辑东西,这需要触发一个事件来重新实例化或清除引用该对象的所有缓存项目。


    使用System.Web.Caching.Cache类可以缓存项目并为缓存中的项目创建依赖项。 如果您使用的是SQL服务器,那么您可以使用SqlCacheDependency类来根据您的数据库从缓存中清除项目。

    否则,您可以创建您自己的CacheDependency类的衍生产品,您可以使用它来完成同样的事情。 我发现这篇文章描述了这一点。


    您可以使用以下方法从输出缓存中移除项目。

    HttpResponse.RemoveOutputCacheItem("/caching/CacheForever.aspx");
    

    现在,这只会让你找到你想要的东西的一部分。 这将删除该特定页面的所有缓存条目。 MSDN文档证实了这种行为。

    至于你的其他问题,Cache.Insert()是跨应用程序的单个缓存存储,不考虑用户身份。

    现在我还将更加关注你在做什么,只缓存实际数据,然后你可以添加/删除特定项目是有意义的。 但是,如果您的.control确实需要大量的CPU等来处理显示,那么输出缓存的想法就可以工作。

    链接地址: http://www.djcxy.com/p/60565.html

    上一篇: Caching a user control and clearing that cache programmatically

    下一篇: Cache VS Session VS cookies?