一定時間経過したらアクセスできなくなるデータキャッシュを使う (C#)
外部リソースから拾ってきたデータをキャッシュしたい場合、ずっとキャッシュすると外部リソース側が更新されたときに困る. そういう時とかに使えるデータキャッシュ. 以前はそういう用途が多い Web アプリケーション用に ASP.NET だけそういう機能があったが、今はデスクトップアプリでも普通に使えるようになった. 最後にアクセスしてから一定時間経過後にキャッシュを無効化したいのであれば AbsoluteExpiration
の代わりに SlidingExpiration
を使う.
とりあえず今回は有効期間1分で、10秒ごとにアクセスしてみた.
usingSystem;usingSystem.Runtime.Caching;usingSystem.Threading;namespaceConsoleApp1{classProgram{staticreadonlyObjectCacheCache=MemoryCache.Default;staticvoidMain(string[]args){while(true){varmessage=(string)Cache["test"];if(message==null){message=$"cached at {DateTime.Now:yyyy-MM-ddHH:mm:ss}";Cache.Add("test",message,newCacheItemPolicy(){AbsoluteExpiration=DateTime.Now.AddMinutes(1)});}Console.WriteLine(message);Thread.Sleep(TimeSpan.FromSeconds(10));}}}}