缓存破坏本地浏览器缓存但确保Azure CDN的响应,而不是来自源服务器的响应(Web角色)

时间:2012-11-04 23:14:27

标签: caching azure-web-roles proxy-server azure-cdn

我正在尝试向Azure CDN(生产站点)上的项目发出HEAD请求,但希望避免来自本地浏览器缓存或原始服务器(我的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角色)。我想保证如果Azure CDN上有“small.png”,我的回复就是来自那里。基本上,我需要确认我的原始服务器不会被请求轰炸,并且CDN将限制99.999999%的请求,包括这一请求。但是,由于我在HEAD请求之前的缓存清除($ .ajaxSetup({cache:false});它在请求中附加了一个唯一的查询字符串,我不确定Azure CDN是否决定将请求转发给原始服务器。

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

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

1 个答案:

答案 0 :(得分:1)

取消选中“启用查询字符串”会完全符合您的要求。

关于确定CDN是否在给定请求上返回原始服务器,您拥有原始服务器,对吧?如果你被击中,你可以看到那里。我不确定是否可以通过查看CDN的响应来判断它是缓存命中还是缓存未命中。