2011-10-30 16 views
2

私は古典的なASP.NETキャッシュを使用するWebサイト作成しました:ASP.NETコードでIISとASP.NETのキャッシュ

DataSet ds = new DataSet(); 
ds = (DataSet) Cache["MyDataSet"]; 

を、私は数時間のために期間を設定したが、しかし、リセットをIISキャッシュはずっと早い。
IISでは、手動でASP.NETキャッシュの期間を設定できますか?

十分なRAMがあり、完全にロードされたキャッシュと作業現場で、私は約1/3の空きがあります(3GB合計、Web Server 2008R2)。

(私がキャッシュ内にある重い計算を(数分)があり、作業中に私はキャッシュのわずかな部分を更新)あなたがキャッシュにオブジェクトを追加するとき、あなたは有効期限ポリシーを指定することができます

+0

この文は何を意味しますか?* IISはキャッシュをもっと早くリセットしますか? IISがASPNETキャッシュをリセットしているという結論にどうしたのですか?この結論につながる具体的な観察は何ですか? – Cheeso

+0

キャッシュがクリアされているかIISがリサイクルされています – Pleun

+0

アプリケーションプールのリサイクル時間はどのくらいですか?いつでもアプリケーションプールがリサイクルされるとキャッシュはクリアされます –

答えて

2

(絶対に、スライド有効期限)。より詳細な説明のための

Cache.Insert("CacheItem", yourobject, 
    null, DateTime.Now.AddHours(3), 
    System.Web.Caching.Cache.NoSlidingExpiration); 

See here

はここで、オブジェクトがキャッシュから削除することができるいくつかの理由があります:

ASP.NETは、これらのいずれかの理由により、キャッシュからデータを削除することができます:あなたは、キャッシュされた項目を管理しやすくするために

Because memory on the server is low, a process known as scavenging. 

Because the item in the cache has expired. 

Because the item's dependency changes. 

アイテムがキャッシュから削除されると、ASP.NETはアプリケーション に通知できます。

清掃を清掃

メモリ が不足しているキャッシュからアイテムを削除する処理です。アイテムは、 の時間にアクセスされていないとき、またはアイテムがキャッシュに に追加されたときに優先度が低いとマークされたときに削除されます。 ASP.NETは、CacheItemPriorityオブジェクトを使用して、最初に取り除くアイテムを と決定します。詳細については、「方法:キャッシュに アイテムを追加する」を参照してください。有効期限

ASP.NETは、掃除のほかに、有効期限が切れるとキャッシュを から自動的に削除します。

+0

私はこれを行いました...しかし、IISはキャッシュを以前にリセットします... – Bzzz

+0

@Bzzz優先度を設定すると、サーバー上のスライディングまたは絶対有効期限とメモリが低くなりませんキャッシュに保持されます。それはあなたのために起こっていない場合は、他の問題がある可能性があります。 – Icarus

+0

「IISは以前にキャッシュをリセットする」という意味は? IISがw3wp.exeを静止させる可能性があります。この場合、キャッシュはなくなります。しかし、それはIISがキャッシュをリセットしているわけではありません。それはIISがプロセスを停止させることです。あなたの声明が意味することを明確にしてください。 – Cheeso

0

要素がキャッシュから自動的に削除されるときをテストするには、そのときに通知を受け取ることができます。ASP.NETは、その目的でCacheItemRemovedCallbackデリゲートを提供します。あなたは

Cache.Insert(
     "CacheItem", 
     yourobject, 
     null, 
     DateTime.Now.AddHours(3), 
     System.Web.Caching.Cache.NoSlidingExpiration 
     CacheItemPriority.Default, 
     new CacheItemRemovedCallback(ObjectRemovedCallback)); 

(私は右のそれは100%を得たかどうかわからない)と、ビジネス・オブジェクトにObjectRemovedCallback方法によって処理することを持っているようなものを書くことができるようにCache.Insert文は、過負荷を持っています。詳細についてはhttp://msdn.microsoft.com/en-us/library/7kxdx246.aspxをご確認ください。ここで早すぎるキャッシュの期限切れの理由を知ることができます。

関連する問題