2014-06-26 45 views
1

是否可以基于用户代理服务两个不同的页面? 如果用户代理与所有其他用户代理的iPhone和pagename-other.html匹配,我想为pagename-iphone.html提供服务。我希望网站上的所有网页都遵循此模式。是否可以在CDN级别(云锋,akamai等)执行此操作。是否可以向CDN添加逻辑

感谢您的帮助!

+1

我希望不会,请不要这样做。 – Ryan

回答

0

我想你是基于用户代理的缓存,如vary: User-Agent。 从理论上讲,服务器提供的Cache服务绝对可以这样做,但是,据我所知,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/了解更多详情。