2017-06-12 7 views
0

.NET 4.5でMemoryCacheを使用してオブジェクトを1か月間保存しようとしています(絶対有効期限 - キャッシュの作成から1ヶ月)。.NETキャッシュ - キャッシュが非常に早く終了する

問題 - キャッシュは1日以内に有効期限が切れるように見えますが、実際には数時間以内に終了することもあります。

コードスニペット

// Setting the cache with absolute expiration time of 1 month: 
string objName = "myObj"; 
MemoryCache memCache = MemoryCache.Default; 
memCache.Add(tokenID, myObj, DateTimeOffset.UtcNow.AddMonths(1)); 

// Accessing the cache later 
MemoryCache getCache = MemoryCache.Default; 
getCache.Get(tokenID); 

質問は

  1. 私が正しくキャッシュを設定していますか?私はAddMonths()を使用する例は見ていませんが、AddDays()を使用する例はたくさんあります。
  2. 私は絶対有効期限のために使用できる時間の最大量はありますか? (無限の有効期限を使用せずにキャッシュを30日間以上設定した例は見当たりません)
  3. 他に、キャッシュが非常に早く期限切れになる原因は何でしょうか?

ありがとうございました!

+0

Webサーバをアイドルにサイトをシャットダウンするための設定をしているし、起こってからそれを停止するが、一定のトラフィックされていますか? –

+0

@SamKuhmonen - 私のサイトのアプリケーションプール設定には、アイドルタイムアウト= 5分、シャットダウン時間制限= 90秒があります。あなたはそれらの話をしていますか? – Ekta

+1

はい、そうです。つまり、サイトへのリクエストが5分間ない場合、ワーカーはシャットダウンされ、メモリキャッシュからすべてを削除します。おそらくそれが問題の原因になっている可能性があります。 –

答えて

1

あなたのWebアプリケーション用に使用している設定IISアプリケーションプールを確認してください。 詳細設定下では、アイドルタイムアウト(分)ための設定があります。この期間以上サイトがアイドル状態の場合、ワーカープロセスはシャットダウンされます。

関連する問題