我正在尝试向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上没有选中"Enable Querystring“。我认为这足以满足我,但我想要的是温暖和模糊的感觉,确实我的回应来自Azure CDN而不是origin。在Fiddler中有什么指标可以证明我的响应来自CDN(代理服务器)而不是源站吗?
目前我对所有东西都有30分钟的缓存过期时间,但我会在上线后调整/优化这一点。
发布于 2012-11-05 08:07:07
保持"enable query string“不被选中,这就是你想要的。
对于CDN请求是否回源站的判断,源站是您自己的,对吧?所以你可以看到你是不是被击中了。我不确定是否有办法仅通过查看CDN的响应来判断它是缓存命中还是缓存未命中。
https://stackoverflow.com/questions/13223965
复制相似问题