質問
最近、私は ASP.NET でのキャッシュの可能性を調査しています。
よく分からなかったので、自分で「キャッシュ」を作成しました。次のようになります。
public class DataManager
{
private static DataManager s_instance;
public static DataManager GetInstance()
{
}
private Data[] m_myData;
private DataTime m_cacheTime;
public Data[] GetData()
{
TimeSpan span = DateTime.Now.Substract(m_cacheTime);
if(span.TotalSeconds > 10)
{
// Do SQL to get data
m_myData = data;
m_cacheTime = DateTime.Now;
return m_myData;
}
else
{
return m_myData;
}
}
}
したがって、値はシングルトンにしばらく保存され、時間が経過すると値が更新されます。時間が経過しておらず、データの要求が完了すると、フィールドに格納されている値が返されます。
実際の方法を使用する場合と比べてどのような利点がありますか (http://msdn.microsoft.com/en-us/library/aa478965.aspx) これの代わりに?
解決
「コンピュータにやらせなさい」という格言は正しいと思います。それはあなたより賢いです」がここに当てはまります。メモリ管理やその他の複雑なことと同様に、コンピュータは自分が何をしているのかについて、ユーザーよりもはるかに多くの情報を持っています。その結果、自分よりも高いパフォーマンスを発揮できるようになります。
Microsoft はこれに取り組んでいるエンジニアのチームを抱えており、おそらくあなたができるよりもはるかに多くのパフォーマンスをシステムから絞り出すことに成功したでしょう。また、ASP.NET の組み込みキャッシュが別のレベル (アプリケーションではアクセスできないレベル) で動作するため、処理が大幅に高速になる可能性があります。
他のヒント
ASP.NET キャッシュ メカニズムはしばらく前から存在しているため、安定していてよく理解されています。最大限に活用するためのリソースがたくさんあります。
要件によっては、独自のソリューションを作成することが適切な解決策となる場合があります。
キャッシュの難しい部分は、何をいつキャッシュしても安全かを選択することです。データが頻繁に変更されるアプリケーションの場合、キャッシュに関するトラブルシューティングが困難なバグが発生する可能性があるため、注意してください。
ASP.NET のキャッシュは機能が豊富で、非常に詳細な方法でキャッシュを構成できます。
あなたの場合(データキャッシュ)、欠けている機能の1つは、SQLサーバー上のデータが何らかの方法で更新された場合にキャッシュを無効にして更新する機能です(SQLキャッシュの依存関係)。