我有一个简单的问题,我只是不确定。我正在尝试提高Intranet站点的性能。我试图通过实现一些缓存来限制到数据库的行程。我是新来的缓存,我不确定这是在用户之间共享的吗?我希望它对个人用户来说是独一无二的。就像每个用户都有自己独立的缓存,就像会话对象一样。我正在尝试这样的事情
if (Cache["_InfoResult"] == null)
{
Cache["_InfoResult"] = db.GetInfoResultBySessionGuid(SessionGuid);
}
_InfoResult = (InfoResult)Cache["_InfoResult"];
然后使用_InfoResult对象来驱动页面区域。我担心的是我希望Cache [“_ InfoResult”]对每个用户都是唯一的。这是正确的还是这个对象对每个用户都是一样的?谢谢你清理它。
干杯, 〜在圣地亚哥
答案 0 :(得分:12)
答案 1 :(得分:3)
缓存具有全局范围,并且在Web应用程序的生命周期内持续存在。 不是每个httprequest。
您可以使用一些简单的代码对此进行测试。
<asp:TextBox ID="txtData" runat="server" Width="200px"></asp:TextBox>
<br />
<asp:Button ID="btnPutToCache" runat="server" Text="Put to Cache" onclick="btnPutToCache_Click" />
<br />
<asp:Button ID="btnGetFromCache" runat="server" text="Get from Cache" onclick="btnGetFromCache_Click" />
<br />
<asp:Label id="lblGetFromCache" runat="server"></asp:Label>
代码隐藏:
protected void btnPutToCache_Click(object sender, EventArgs e) {
Cache["data"] = txtData.Text;
}
protected void btnGetFromCache_Click(object sender, EventArgs e) {
lblGetFromCache.Text = Cache["data"].ToString();
}
将上述所有代码放入一个页面。部署您的网站。从浏览器窗口实例中点击页面,将一些测试文本放入文本框,然后点击Put to Cache按钮。
打开一个新的浏览器窗口并点击该页面。单击Get from Cache按钮,观察结果。