【问题标题】:Why my httpcontext.cache works in localhost but not production?为什么我的 httpcontext.cache 可以在 localhost 中工作,但不能在生产环境中工作?
【发布时间】:2011-10-06 16:30:14
【问题描述】:

我正在使用 HttpContext.Cache 来缓存我的数据,但它只适用于我的本地主机。

在生产中,缓存不起作用,我的方法总是去我的数据库检索数据,而不是从缓存中捕获它们。我只使用了一个 Sql Server 实例和一个 Web 服务器。

我的代码是这样的

 protected void LoadMenuSistem()
        {
            string menu = ""; 
            if (Cache["menuSistem"] != null)
            {
                Response.Write(Cache["menuSistem"].ToString());
            }
            else
            {
                  // Retrive data from  database and populate the string menu
            }

            Cache["menuSistem"] = menu;
}

【问题讨论】:

  • 仅供参考,您上面的代码容易受到缓存数据竞争条件的影响。见scottcate.mykb.com/Article_5CB26.aspx
  • 非常好的文章,我可以实现这个缓存模式,但我必须发现为什么在 localhost 中一切正常,但在 Web 服务器中我错过了缓存。
  • 您的代码在每次缓存命中后通过将空的menu 分配给Cache["menuSistem"] 来使缓存无效...
  • 但是……只是在网络服务器上?为什么这不会发生在 localhost 中?
  • 缓存使用 AFAIK 一些线程来清理旧的/未使用的条目和/或对内存不足的情况等做出反应 - 这意味着只要您不为缓存进行特定设置,这就是而是与时间和内存相关的......

标签: c# .net asp.net caching webserver


【解决方案1】:

请检查您的生产服务器中的 CPU 使用率和 RAM 大小。如果服务器缓存中的内存不足,则根据设置的优先级将其删除以释放内存。这个过程称为清除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 2018-03-23
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多