【发布时间】: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