azure apiマネージャポリシーで特定の値をキャッシュしている場合、キャッシュをクリーンアップしてAPIから値を取得するためにアイテムを削除します。Azure Apiマネージャのcache-remove-valueポリシーでキャッシュアイテムが削除されない
cache-remove-valueポリシーを使用して値を削除しても、次回のAPIコールでキャッシュ内の値が検出されることがあります。ここでのサンプルコードは、次のとおり
<cache-store-value key="Key123" value="123" duration="300" />
<cache-lookup-value key="Key123" variable-name="CacheVariable" />
<cache-remove-value key="Key123" />
<cache-lookup-value key="Key123" default-value="empty" variable-name="CacheVariable2" />
<return-response>
<set-status code="504" reason="" />
<set-body>@(context.Variables.GetValueOrDefault<string>("CacheVariable2"))</set-body>
</return-response>
このコードは、基本的にキーKey123とキャッシュ項目が削除された後かが判明した場合に基づいて身体内の空の返し又は「123」。これは、常にキャッシュされた項目「123」の値を返します。
誰でもこの問題を経験したか、キャッシュをクリーンアップする方法を見つけましたか?
リトライを連続してチェックすると、2秒後、時には1分後にアイテムがクリーニングされることがあります。私はdelete呼び出しがバックグラウンドで非同期または待ち行列に入れられたコールだと思うので、継続的にチェックすることなくきれいにされているかどうかわからない。
UPDATE:今の実際の溶液として
、代わりに削除、Iは実際に1秒の持続時間及びダーティ値キャッシュ項目を更新します。
。ほとんどの場合、この種の操作をブロックする必要はありません。これは、Redisキャッシュへの分散呼び出しを行うためです。興味深いことに、私は更新キャッシュが同じように動作することを期待しています。なぜ回避策で異なる動作が見られるのかわかりません。 –
続行する前にcache-remove-valueが完了するまでポリシー処理は待機しませんが、cache-storeは実行します。だから、回避策は機能しますが、もっと良い方法があるはずです。 –