2009-07-15 8 views
2

私はその後、...ASP.Netキャッシュ

は、「製品情報」をキャッシュすることが可能になるまで 何も内容的に変化しない毎朝午前3時、サードパーティからのダウンロードデータのアプリケーションを持っていますそれまでページ? これは私がglobal.asaxで設定すべきものですか?

答えて

2

はい、これまでキャッシュすることができます。これを行うには多くの方法があります。

データを取得するためにサーバーサイド呼び出しがある場合は、最初に取得したときにこのデータをキャッシュに追加し、翌日の午前3時に有効期限を設定します。次に、各ページ・コールでこのデータ・オブジェクトのキャッシュをチェックし、ヌルを戻す場合はデータのフェッチをもう一度開始します。

ページ出力のキャッシュ機能も使用できますが、詳細な制御はできません。このような

何か:

if (HttpContext.Current.Cache["MyData"] != null) 
    return HttpContext.Current.Cache["MyData"] as DataObjectClass 

//Get data into dataobject 

HttpContext.Current.Cache.Add(
        "MyData", 
        DataObject, 
        DateTime (tomorrow 3am), // psuedo 
        null, 
        TimeSpan.Zero, 
        System.Web.Caching.CacheItemPriority.Normal, 
        null); 

return DataObject; 
+0

doh!私は遅いタイパーであることが嫌いです:(これは私が何をするつもりだった:) –

1

あなたは、そのページ自体にそれを設定することができます。そのページのコードの後ろに:

Response.Cache.SetExpires("put tomorrow's date @ 3AM here"); 
Response.Cache.SetCacheability(HttpCacheability.Public); 
2

別のオプションは、System.Web.Caching.Cacheクラスを使用することです。データを読み込むたびに、ここにキャッシュして、必要に応じて取得することができます。このクラスでは、TimeSpanによる有効期限が設定されていますが、毎日特定の時間にデータをダウンロードするので、実際には問題はありません。

0

私は24時間ごとに第三者のデータを保持します。キャッシュは、そのデータが何であるかによって異なります。それ以上の処理が必要なファイルですか?それを処理し、メモリにキャッシュします。そして、フェイルオーバーは次のようになります:メモリ内キャッシュ、一時的な一時的な場所、サードパーティの場所。

関連する問題