2

Azure CDN(本番サイト)上のアイテムにHEADリクエストを送信しようとしていますが、ローカルブラウザーキャッシュまたはオリジンサーバー(Webロール)からの応答を避けたいと考えています。これはトラフィックの多いWebサイトになり、コンテンツはすべて静的であるため、私のWebロールの/cdnフォルダーからAzureCDNにキャッシュされます。

次のコマンドを呼び出すことで、ローカルブラウザのキャッシュを回避する問題を解決しました。

$.ajaxSetup({cache: false});

また、HEADリクエストは、応答日を取得するために使用されています。必要なのは、GMTでの現在の時刻が保証されていることだけです(AzureはすべてGMTに設定されています)。

$.ajax({
    type: "HEAD",
    async: true,
    url: "small.png",
    success: function (message, text, response) {
        doSomething(response.getResponseHeader("Date"));
    }
});

これで、ブラウザーのキャッシュされたコピーによって応答が完全に実行されないことが保証されますが、応答がAzure CDNまたはオリジンサーバー(Webロール)からのものであるかどうかを確認する方法がわかりません。「small.png」がAzureCDNにある場合、そこから応答が返されることを保証したいと思います。基本的に、オリジンサーバーがリクエストに攻撃されないこと、およびCDNがこれを含むリクエストの99.999999%を抑制していることを確認する必要があります。ただし、HEADリクエスト($ .ajaxSetup({cache:false});がリクエストに一意のクエリ文字列を追加する前にキャッシュを無効にしているため、AzureCDNがリクエストをに転送することを決定しているかどうかはわかりません。オリジンサーバー。

Azureポータルを介して、CDNで[クエリ文字列を有効にする]のチェックを外したままにしていることに注意してください。これで十分だと思いますが、実際に私の応答はAzure CDNからのものであり、発信元ではないという、暖かくて曖昧な感じが欲しいです。私の応答がオリジンサーバーではなくCDN(プロキシサーバー)からのものであることを証明するインジケーターがFiddlerにありますか?

現在、すべてで30分のキャッシュの有効期限がありますが、ライブになるときにこれを調整/最適化します。

4

1 に答える 1

1

「クエリ文字列を有効にする」のチェックを外したままにすると、まさにあなたが望むことを実行します。

特定のリクエストでCDNがオリジンサーバーに戻ったかどうかを判断することに関しては、オリジンサーバーを所有していますよね?だからあなたはあなたが打たれたかどうかをそこに見ることができます。CDNの応答を見ただけで、それがキャッシュヒットなのかキャッシュミスなのかを判断する方法があるかどうかはわかりません。

于 2012-11-05T00:07:07.380 に答える