是否可以向CDN添加逻辑

时间:2014-06-26 03:40:11

标签: cdn amazon-cloudfront akamai

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我认为您所追求的是基于用户代理的缓存,例如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/了解详情。