出力コンテンツをキャッシュするWebサービスを作成しようとしています。Webサービス - キャッシュ更新
私は[WebMethod(CacheDuration=1800)]
を追加しましたが、問題は、Webサービスが30分後に自動的にそのキャッシュを更新したいということです。
私はC#で.netを使用しています。 Webサービスは、実際にはXMLデータを取得し、解析してクライアントに送信するプロキシです。
Webサービスは、一定期間(どのくらい)にキャッシュを更新できますか?
出力コンテンツをキャッシュするWebサービスを作成しようとしています。Webサービス - キャッシュ更新
私は[WebMethod(CacheDuration=1800)]
を追加しましたが、問題は、Webサービスが30分後に自動的にそのキャッシュを更新したいということです。
私はC#で.netを使用しています。 Webサービスは、実際にはXMLデータを取得し、解析してクライアントに送信するプロキシです。
Webサービスは、一定期間(どのくらい)にキャッシュを更新できますか?
timer classesのいずれかを使用して、キャッシュされた結果セットをリフレッシュして、クラスのフィールドに保存することができます。
この方法では、IISではなくキャッシュを管理できます。
タイマーの代わりにはCache
クラスを使用することです - それは有効期限が切れると自動的にキャッシュを更新するCacheItemUpdateCallback
を使用して(まだそれがリフレッシュするとして、ユーザがメソッドを呼ぶかもしれない小さなウィンドウを残して - おそらくを使用キャッシュ項目)。
あなたのリンクによると、私は、Webで "System.Windows.Forms.Timer"を使うことはできないと思います。私は "System.Timers.Timer"クラスを試して、Elapsedイベントを使用しましたが、それはハンドラにヒットしませんでした。私は下記のコードを使用しました。 'System.Timers.Timer t =新しいSystem.Timers.Timer(); t.Enabled = true; t.Interval = 5000; t.Elapsed + =新しいSystem.Timers.ElapsedEventHandler(t_Elapsed); t_Elapsed(オブジェクト送信者、System.Timers.ElapsedEventArgs e)を無効 {} ' – Pankaj
私の最初のアイデアは、しばらくの間スリープ新しいスレッドを使用していました実行を開始し(キャッシュを更新する)、再びスリープします。それでも、それは簡単に聞こえますが、その悪夢を実装する。更新間隔中に共有されるすべてのリソースは、更新できるようにロックする必要があります。これに関する提案はありますか? – user1226051
ええと、わかりませんが、t.start()が必要だと思います... – user1226051
質問がありますか? – Oded
はい。ウェブサービスは、ある期間(それ自身)の後にキャッシュをどのように更新できますか? – user1226051
その場合、なぜ30分間キャッシュするのですか? 1日キャッシュする。 – Oded