2

項目がキャッシュに入れられると、タイムアウトが割り当てられます (Put() の呼び出しによって明示的に、またはキャッシュ構成から暗示されます)。取得した各アイテムの有効期限を更新/リセットしたい [Get() を呼び出す]。

アイテムを明示的に配置/更新する必要がありますか?それとも、有効期限が自動的に Now + timeout に更新されますか?

==更新==

ResetObjectTimeout() メソッドを呼び出す必要があるという意図があるようです。ドキュメントには、有効期限の更新ロジックに関する他の言及はありません。

==更新2 ==

簡単なテスト/実験では、ResetObjectTimeout() は Put() を使用したのと同じくらい多くのネットワーク トラフィックを生成したため、タイムアウトを更新するためだけにエントリ全体がネットワーク経由で伝達されているようです。アイテムごとに異なる量のデータでこれを試してみたところ、新しいアイテムを追加していないにもかかわらず、データ量に応じてトラフィック レベルが実際に上昇しました。

タイムアウトを更新する理由は、キャッシュ アイテムが最後に使用されてから N 分間キャッシュに残りたいからです。これは非常に一般的な使用パターンになると思います。実装するには、取得操作ごとにネットワーク経由ですべてのデータを再送信する必要があります。これにより、キャッシュを使用する利点が大幅に減少します。たとえば、スケーラビリティとパフォーマンスが制限されます。

4

1 に答える 1

0

いいえ、appfabric のすべてのタイムアウトは絶対的であるためです。

ご覧のとおり、Data.Cache にはタイムアウトをリセットするためのメソッドがあります (実際には、データを取得せずに新しいタイムアウトを適用できますが、実際には休むことはできません)。

シナリオによっては、Read-Through と Write-Behind が役立つ場合があります

于 2012-12-18T08:42:50.267 に答える