我正在尝试将值存储在缓存中并将其检索回来以缩短处理时间。当我拿回缓存项时,我需要计算该值。但问题是它没有给我存储在缓存中的原始值。而不是那样,它给了我从缓存中获取后我计算的最新值。
我使用以下方法来模拟我的问题。我第一次在缓存中存储了“abc123”。然后我把它改成了“def”。但当我得到它时,它显示“def”而不是“abc123”。这应该是那样的吗?还是我做错了?感谢。
protected void Page_Load(object sender, EventArgs e)
{
MyObj abc = (MyObj)Cache["myCache"];
if (abc != null)
{
Response.Write(abc.MyText);
Response.End();
return;
}
Response.Write(abc);
abc = new MyObj() { MyText = "abc123" };
Cache.Insert("myCache", abc, null, DateTime.Now.AddMinutes(1), TimeSpan.Zero);
abc.MyText = "def";
}
class MyObj
{
public string MyText { get; set; }
}
答案 0 :(得分:1)
您正在编辑缓存中的同一对象(引用)。如果您不想要这种行为,则需要在将对象放入缓存之前克隆该对象。