0

写真の形式でフィード アイテムに埋め込まれたグラフを含む Web フィードを発行し、MVC アクションを使用して Web フィードをポーリングしているクライアントに返されます/RSS_Img/filename

一部のグラフはフィード項目とともに更新されます。サーバー側で画像が変更されたら、クライアントに画像を再読み込みさせたいと思います (これは別のコントローラーのアクションによって実行されるため、グラフがいつ更新されるかを制御できます)。 )。

同時に、クライアント側でのキャッシングを避けたくありません。これにより、帯域幅が大幅に増加する可能性があります。

私の最良の選択肢は何ですか?私は次のことを検討しました:

  • 明らかに画像名を変更しますが、メール アイテムとして転送される可能性のあるフィード アイテムが破損する可能性があるため、受け入れられません。または、古いバージョンを保持する場合にストレージ サイズが大幅に増加します。
  • 更新される可能性のあるシンジケーション項目をマッピングし、画像を取得するアクションResponse.Cache.SetCacheability(HttpCacheability.Server);でそれらの項目のみを設定します[実際には、アクションの結果をキャッシュする利点はほとんどないと思うので、キャッシュ可能性を none に設定する必要があると思いますRSS_Img:基本的には、ファイル自体をロードして返すだけです。] .
    これには、リフレッシュ (またはフリーズ) するイメージの ID を SQL サーバーから取得する必要があり (大量のチャート イメージを処理しています)、WebApp にかなりの負担がかかります。
    さらに、更新される可能性のあるアイテムが何であるかを常に確認できるとは限らないため、このアプローチは要件を 100% カバーしていません。

私が探していた解決策は、画像ファイルを変更するときにキャッシュを無効にする簡単な方法を見つけることでしHttpResponse.RemoveOutputCacheItem("/RSS_Img/" + fileName.Value)た.

他に考えられる選択肢はありません。他に実用的なアプローチはありますか?

4

1 に答える 1

0

従来の解決策は、 のようなダミー パラメータで画像を参照すること<img src="chart.gif?cache=448267163"/>です。グラフを更新するたびに、グラフへのリンクを新しい値で更新します。多くの場合、最終更新日がパラメーター値として使用されます。

于 2012-05-14T19:10:49.707 に答える