2016-09-29 6 views
0

私はAngularJs 1.3.7フロントエンドアプリケーションをC#バックエンドAPIで開発しています。ちょうど最近、頭痛を引き起こすサーバー側にキャッシュを追加しました。 Get要求は、要求を一度実行した後でブラウザにキャッシュ制御ヘッダーを設定するため、API応答をキャッシュします。データがキャッシュされた後、バックエンドはサーバー・コントローラーに対してPOST/PUT/DELETE要求が行われた後にキャッシュを正しく無効にします。問題は、ブラウザ(私の場合はChrome)は、リクエスト(POST/PUT/DELETE)が同じURLに対して行われた場合にのみキャッシュをリフレッシュすることです。ブラウザ200(キャッシュされた)強制リロード


実施例のシーケンスは:www.bestGames.com/gamesをGET - > POSTのwww.bestGames.com/games - > GET www.bestGames.com/games(キャッシュがクリアされ、データが再でした。正しく更新されました)。

Not working:GET www.bestGames.com/games-> PUT www.bestGames.com/games/20-> GET www.bestGames.com/games(キャッシュを更新せず、古いデータを表示)。

Not working:GET www.bestGames.com/games-> PUT www.bestGames.com/games?id=20 - > GET www.bestGames.com/games(キャッシュを更新せず、古いデータを表示)。

Working:GET www.bestGames.com/games-> PUT www.bestGames.com/games-> GET www.bestGames.com/games(キャッシュがクリアされ、データが正しく再更新されました)。

ので、以外のブラウザのキャッシュリフレッシュする方法が他にない:www.bestGames.com/gamesに余分な要求を追加要求

  • をGETするために、「?=ランダム」のようなものを追加する

    • は、ブラウザのキャッシュをクリアするだけです。
  • 答えて

    0

    おそらく、この回答が役に立ちます。 https://superuser.com/questions/89809/how-to-force-refresh-without-cache-in-google-chrome

    OSに依存しますが、C#を使用しているのでWindowsと仮定します。キャッシュを無視して、Ctrlキーを押しながらF5キーを押すか、F5キーを押してリロードしてください。

    +0

    私はさらにコード化された解決策が必要です。特定のURLのキャッシュ全体をクリアする必要はありません。 – MattJ

    +0

    それから、 "?=ランダム"のように見えて、私が見たことから行く方法です。 – Kyrre

    関連する問題