短链接是一件方便的工具,但在它的背后会产生 HTTP 重定向这样一次额外的通信。一次重定向消耗的能量十分微小,但在全世界不断重复之下,这种负荷便逐渐累积。本文整理思考重定向所产生的 CO2 的方法,并探讨在设计层面可以采取的削减对策。
单次重定向的能耗成本
年度累积影响
以 Bitly 为首的短链接服务,每天都在处理点击。除 Bitly 之外,如果把 TinyURL、Rebrandly 以及各个社交平台内置的短链接功能合并计算,全世界的重定向总次数可以认为相当大。
按这样的次数累积,每年的 CO2 排放预计也并不小。因此,重定向也是环境问题中需要考虑的对象。它并不是一个能用「不过是重定向而已」轻易带过的话题。
CDN 边缘缓存的减排效果
也有短链接服务使用 CDN (Content Delivery Network)。如果 CDN 的边缘服务器已经缓存了重定向目标的信息,请求就不会到达源服务器,而是在离用户更近的边缘节点上处理完毕。
在 CloudFront、Cloudflare 等 CDN 上,可以由边缘缓存直接作出响应。在边缘响应,就能省去到源服务器的往返通信。善用 CDN 缓存的短链接服务,更容易抑制环境负荷。
301 与 302 - 缓存效率的关键差异
重定向所用的 HTTP 状态码也会影响环境负荷。301 (Moved Permanently) 的响应可能由浏览器缓存,在缓存期间,同一用户再次点击同一个短链接时,会直接从浏览器缓存完成重定向。在此期间不会向服务器发出请求,也就不会产生重定向的往返通信。
另一方面,302 (Found) 在默认情况下不会被缓存。为了做点击分析而希望每次都经过服务器的服务,有时会采用 302,这时同一用户再次访问也每次都会产生请求。假设重复点击率为 20%,仅仅改用 301 就可以把整体的请求数削减约 15%〜20%。
在不需要点击分析的用途上,例如内部文档的链接共享或印刷品上的二维码,选择 301 重定向也有助于降低环境负荷。
绿色 IT 视角下的设计指南
在设计和选择短链接服务时,为了降低环境负荷,需要考虑的要点可以整理如下。
第一是利用 CDN 边缘缓存。把到达源服务器的次数降到最低,就能抑制整个网络的能源消耗。第二是按用途区分使用 301 和 302。对不需要分析的链接采用 301,就能发挥浏览器缓存的作用。第三是作为选择标准的数据中心电力来源。选择使用可再生能源的云服务,就能抑制重定向用电带来的排放。
关于数据中心的能源效率和可持续的基础设施设计,能够系统学习的书籍正在增多。
总结 - 微小重定向的巨大总和
一次重定向的 CO2 排放量只是十分微小的量。但按年累积起来,排放总量并不小。利用 CDN、在合适的场合采用 301 重定向、选择以可再生能源运营的基础设施,这些设计判断层层累积,有望降低短链接这一基础设施的环境负荷。兼顾便利与可持续性,也是短链接服务在设计上的课题。