是否可以根据用户代理提供两个不同的页面。 如果用户代理与iPhone匹配,我想提供pagename-iphone.html,对于所有其他用户代理,我想提供pagename-other.html。我希望网站上的所有页面都遵循这种模式。是否有可能在CDN级别(云端,akamai等)执行此操作。
感谢您的帮助!
答案 0 :(得分:0)
我认为您所追求的是基于用户代理的缓存,例如vary: User-Agent
。
理论上,服务器提供缓存服务肯定可以这样做,但是,据我所知,CloudFront和大多数其他主要CDN提供商都不会这样做。支持如此。
基本原因非常简单,目前有太多的User-Agent标题,并且它在每个浏览器上几乎是唯一的,不提及同一浏览器的不同版本。如果您纯粹基于整个User-Agent做事,那么大部分时间都会失去CDN缓存的好处。
一些更高级的服务器允许您根据标头添加条件,例如,在Varnish中,您甚至可以添加if,else逻辑来返回不同的值。但这并不适用于大多数CDN。
另一方面,您不应该依赖CDN来返回不同的html页面。 CDN更常用于加速工件(js / css / imgs)而不是整个页面。
编辑:实际上,我刚收到一封来自AWS的电子邮件,现在CloudFront开始支持这一点:
移动设备检测:您现在可以缓存并交付自定义设备 在不同设备上向您的观众提供内容(例如移动设备与桌面设备) 基于用户代理标头的值。