技术博客 > 正文

CDN如何实现重定向优化

2022-03-09

当回源需要302跳转时,通过重定向优化功能,CDN可以直接将302跳转以后取回的文件返回给用户并进行缓存;当源站异常响应4xx、5xx时,通过错误页面重定向功能,CDN可以返回一个事先约定定制的页面,友情响应用户。减少用户访问时间以及降低异常感知,进而优化用户体验,提高运营灵活性和降低成本。

功能背景:

源站302重定向优化-场景:多数业务请求,存在源站请求会给出301/302的情况,但源站不希望301/302直接透传至终端用户的场景,为了解决该现象,可通过“重定向优化”功能,若源站返回的HTTP 状态码为301/302,网宿CDN节点可以根据重定向后的目标URL(HTTP 301/302响应中的Location头对应的信息)请求文件,而后返回给用户并在CDN节点上进行缓存。这样可以向用户屏蔽重定向过程,免去用户再次向301/302后url发起请求的连接时间,从而加快用户访问速度。

错误页面重定向-场景:当用户发起访问,源站却出现异常情况时,如果直接返回4xx或5xx的错误状态至前端,那么用户体验将会非常糟糕。为了解决该问题,可以使用“错误页面重定向”功能,在CDN节点回源请求时,获取到源站响应的状态码,若此状态码为错误的4xx或5xx状态码,则网宿边缘节点将返回给用户端一个HTTP状态码为302的响应,响应头的Location中指出了发生错误时的跳转页面。用户端浏览器接收到该响应后,根据Location中URL进行请求,从而得到一个新的较为友好的提示页面。进而保障了用户体验。

嵌入URL改写-场景:在一个典型的HTML页面中,会包含一些需另外加载请求的资源(比如图片、文本文件等),用户请求这个页面后,加载页面时会同时请求这些资源,并将它们缓存到本地。当用户刷新此页面时,如果已经超过max-age时间,会再次发出对这些静态资源的http请求。如果这些文件没有过期,服务器会返回304,直接使用缓存,造成一定时间的响应时间开销,如果已经过期则返回新资源。为了解决这种现象,通过“嵌入URL改写”功能,可以避免客户端对这些没有过期的文件发出请求,节约发出请求到接收响应之间的时间,从而减少客户端页面的加载时间。具体做法是,改写HTML页面中的嵌入URL,在URL内包含资源的特定信息(称为pv值),同时重写HTTP响应头,使资源可以在用户本地缓存1年。当服务器修改资源时,资源的URL也将改变(体现为pv值改变),缓存中的旧资源将不会被使用。

穿过数字经济的短炒热潮,看老牌CDN企业的长期逻辑

◆关于重定向优化

重定向优化功能通过执行相应操作,可实现以下功能:
•源站302重定向优化-代理客户端完成新链接302url的资源请求
•错误页面重定向-源站出现异常时,由CDN响应较为友好的提示页面
•嵌入URL改写-由CDN完成html页面内嵌的外部资源更新检测,从而降低客户端页面加载时间

◆功能使用说明

源站302重定向优化
使用方式:将需要配置重定向优化的需求告知网宿客服,并提供跳转后的URL示例,网宿将在1天内完成并测试此项配置。
注意事项:重定向后的URL必须是CDN可以获取内容的(注:重定向URL中域名信息为IP的可以进行访问),所以该功能适用于重定向的目标URL也是在网宿进行CDN加速的情况,或者源站通过重定向做负载控制的情况。 该功能默认不开启。

错误页面重定向
使用方式:需告知网宿负责人具体需求,提供错误状态码及跳转的URL(即跳转到哪个页面)
注意事项:

  1. 若跳转到的是同一个域名的URL,则跳转后的URL必须是存在的,否则也将返回404的错误且有可能进行循环跳转。
  2. 该功能可结合重定向优化功能一起使用,使得用户端在本该收到错误页面302跳转时,直接收到200的重定向后页面,进一步提升用户体验。

嵌入URL改写
使用方式:具体做法是,改写HTML页面中的嵌入URL,使其包含资源的特定信息(称为pv值),当服务器修改资源时,资源的URL也将改变(体现为pv值改变),缓存中的旧资源将不会被使用。同时重写HTTP响应头,使资源可以在用户本地缓存1年。
squid继续使用原来的max-age值(上例中为300秒)检查资源是否改变,如果改变,则资源的pv值也会随之改变,新的URL将会被提供给用户。当资源没有改变时,用户使用本地缓存,从而避免了对这些资源的请求。
注意事项:
1、该功能属于页面改写的功能之一,因此也需要满足页面改写的条件
2、当前版本,页面改写只针对HTTP/1.1的请求有效,对HTTP/1.0的请求不会进行改写(即使配置了use_http_1_1和support_chunked on);同时,页面改写取消对use_http_1_1和support_chunked配置的要求,可以不配置这两个配置项
3、嵌入URL改写对可以缓存的页面有效,对不能缓存的页面无法生效

价值优势

√源站302重定向优化,由CDN完成重定向,免去用户再次向301/302后url发起请求的连接时间,从而加快用户访问速度。
√错误页面重定向,当源站异常返回4xx、5xx时,通过该功能,向前端展现更友好的提示页面。进而保障了用户体验。
√嵌入URL改写-由CDN代替前端完成html页面内嵌的外部资源更新检测,从而降低客户端页面加载时间