【问题标题】:Is it possible to add logic to CDN是否可以将逻辑添加到 CDN
【发布时间】:2014-08-16 19:15:36
【问题描述】:

是否可以根据用户代理提供两个不同的页面。 如果用户代理与所有其他用户代理的 iPhone 和 pagename-other.html 匹配,我想提供 pagename-iphone.html。我希望网站上的所有页面都遵循这种模式。是否可以在 CDN 级别(云端、akamai 等)执行此操作。

感谢您的帮助!

【问题讨论】:

  • 我希望不会,请永远不要这样做。

标签: cdn amazon-cloudfront akamai


【解决方案1】:

我认为您所追求的是基于用户代理的缓存,例如vary: User-Agent。 理论上,提供缓存服务的服务器肯定可以这样做,但是据我所知,CloudFront 和大多数其他主要 CDN 提供商都不支持。

根本原因很简单,目前User-Agent头太多了,而且几乎每个浏览器都是唯一的,更不用说同一个浏览器的不同版本了。如果纯粹基于整个 User-Agent 做事,大部分时间你会失去 CDN 缓存的好处。

一些更高级的服务器允许您根据标头添加条件,例如,在 Varnish 中,您甚至可以添加 if,else 逻辑以返回不同的值。但这不适用于大多数 CDN。

另一方面,您不应该依赖 CDN 返回不同的 html 页面。 CDN 更常用于加速工件(js/css/imgs)而不是整个页面。

编辑:实际上,我刚刚收到一封来自 AWS 的电子邮件,现在 CloudFront 开始支持这一点:

移动设备检测:您现在可以缓存和交付自定义 在不同设备(例如移动设备与桌面设备)上向您的观众展示内容 基于用户代理标头的值。

详情请参考:http://aws.amazon.com/about-aws/whats-new/2014/06/26/amazon-cloudfront-device-detection-geo-targeting-host-header-cors/

【讨论】:

    猜你喜欢
    • 2016-12-31
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多