【问题标题】:httpcache problemhttpcache问题
【发布时间】:2010-11-20 05:01:58
【问题描述】:

我有一个从数据库中提取的存储库,有时还从缓存中提取。

为了实现这一点,我创建了一个接口 ICacheWrapper,它允许 repo 使用 HttpRuntime.Cache、AppFabric 等。 ICacheWrapper 的具体类通常在其构造函数中使用缓存,如下所示: new HttpCacheWrapper(HttpRuntime.Cache)

repo 的构造函数引用缓存包装器,如下所示:

myRepo = new Repo(new HttpCacheWrapper(HttpRuntime.Cache));

如果我创建 2 个存储库,缓存会被深度复制吗?我认为不会,但我们的性能问题表明并非如此。我在这里错过了什么吗?

感谢您的帮助!

【问题讨论】:

    标签: asp.net httpcontext.cache


    【解决方案1】:

    你在看什么? HttpCacheWrapper 对它通过的 HttpRuntime.Cache 做了什么?

    我怀疑您看到的是一个缓存策略,它对事物的缓存速度太长了。正如 Raymond Chen 所说,“不正确的缓存策略与内存泄漏无法区分。”

    我将隔离此问题的方法是尝试使用您拥有的策略仅使用一个 repo 进行测试。看看你的性能问题是否出现。

    如果没有,那么继续创建第二个 repo 并密切监视内存使用情况。

    【讨论】:

    • 更多研究/重构的结果:看起来从缓存中提取的内容列表正在从单个缓存中提供,这很好。正在过滤此列表以适应请求它的网络表单的需求。然后将过滤后的列表绑定到 webform ui。似乎正在发生的事情是,除了缓存列表之​​外,还创建了过滤列表,并且两者都没有被及时 GC-ed。
    猜你喜欢
    • 1970-01-01
    • 2012-01-02
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多