2

我正在尝试向 Azure CDN(生产站点)上的项目发出 HEAD 请求,但希望避免来自本地浏览器缓存或源服务器(我的 Web 角色)的响应。这将是一个访问量很大的网站,内容都是静态的,因此从我的 Web 角色的 /cdn 文件夹中缓存在 Azure CDN 上。

我已经通过调用解决了避免本地浏览器缓存的问题:

$.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”在 Azure CDN 上,我的响应来自那里。基本上,我需要确认我的源服务器不会被请求轰炸,并且 CDN 将限制 99.999999% 的请求,包括这个请求。但是,由于我在 HEAD 请求 ($.ajaxSetup({cache: false}); 之前将一个唯一的查询字符串附加到请求之前的缓存清除,我不确定 Azure CDN 是否决定将请求转发到源服务器。

请注意,通过 Azure 门户,我在我的 CDN 上未选中“启用查询字符串”。我认为这足以让我满意,但我想要一种温暖而模糊的感觉,即我的响应确实来自 Azure CDN 而不是起源。Fiddler 中是否有任何指标可以向我证明我的响应来自 CDN(代理服务器)而不是源服务器?

目前我的所有内容都有 30 分钟的缓存过期,但是当我们上线时我会调整/优化它。

4

1 回答 1

1

保持“启用查询字符串”未选中完全符合您的要求。

至于确定 CDN 是否在给定请求上返回源服务器,您拥有源服务器,对吗?所以你可以在那里看到你是否被击中。我不确定是否有办法仅通过查看 CDN 的响应来判断它是缓存命中还是缓存未命中。

于 2012-11-05T00:07:07.380 回答