値をキャッシュに保存し、それを取得して処理時間を改善しようとしています。キャッシュ アイテムを取得したら、値を計算する必要があります。しかし、問題は、キャッシュに保存した元の値が返されないことです。その代わりに、キャッシュから取得した後に計算した最新の値を提供しています。
以下を使用して問題をシミュレートしました。初めて「abc123」をキャッシュに保存しました。次に、「def」に変更しました。しかし、戻ってくると、「abc123」ではなく「def」と表示されます。そんなはずじゃないの?それとも間違っているのは私ですか?ありがとう。
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; }
}