【问题标题】:Cache busting a local browser cache but ensuring response from Azure CDN and not from origin server (Web Role)缓存破坏本地浏览器缓存但确保来自 Azure CDN 而不是来自源服务器的响应(Web 角色)
【发布时间】:2012-11-04 23:14:27
【问题描述】:

我正在尝试向 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 分钟的缓存过期时间,但当我们上线时我会调整/优化它。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复 smarx!实际上,在我从事这个项目的过程中,我曾多次看到你的 smarxcdn 博客文章。我的源服务器是 Azure 上的生产 Web 角色,我将看看是否可以设置它以供 RDP 检查日志。
    • 我能够远程访问我的 Web 角色的所有实例,并确认对 small.png 的 HEAD 请求在 CDN 上受到了限制,因为图像缓存在 Azure CDN 上并留下了“查询”在 Azure 门户中我的 CDN 终结点设置上未选中字符串”。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    相关资源
    最近更新 更多