1

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

感谢您的帮助!

4

1 回答 1

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/了解更多详情。

于 2014-06-27T06:27:55.953 回答