Edgio Logo

Edgio Blog

Edgio Layer0实现无服务器托管支持在边缘缓存GraphQL API应用(上)

通过Layer0的 无服务器托管,在边缘缓存 GraphQL API应用,可以获得更好的性能和更高的缓存命中率。创建强大的基于 cookie、身份验证、URL 模式和 HTTP头的自定义缓存逻辑。

GraphQL是一种流行的查询语言(Query Language),用于读取和修改API中的数据,是无头网站趋势中的一项关键技术,它允许网站建设者使他们的API层更加灵活、强大和高效。然而,开发人员在网络边缘缓存GraphQL APIs时,面临种种挑战。为此, Edgio Layer0设计开发了一个简化GraphQL边缘缓存的解决方案,并允许开发团队在无服务器环境中托管GraphQL服务器。GraphQL缓存填补了无头和API优先的Web 应用程序市场的一项空白,充分体现了Edgio和Layer0联合的价值。

什么是 GraphQL?

GraphQL查询语言改进了传统的REST APIs,并在开发者中发展迅速、被广泛采用。GraphQL最初在Facebook孵化后开源,提供声明式、高效的数据获取,从而显著地提高了性能。除此之外,客户端和服务器之间的强类型模式使团队能够更快地独立迭代他们的API,而不会引起版本控制问题。

GraphQL可以与任何后端框架或编程语言一起使用。这一优点,加上其强大的工具(即强类型和对自省的内置支持),使得GraphQL深受开发者青睐,尤其是以无头或API优先架构的企业组织,如Twitter和Airbnb。在JS年度状况调查中,GraphQL 在开发人员中的认知度 (98%)、满意度 (94%) 和兴趣度 (87%) 得分最高,远超其他数据层解决方案。

边缘的 GraphQL缓存问题

传统的CDN和缓存软件均围绕着REST APIs建立,其中可缓存的只有HTTP GET请求,而且缓存密钥可以从REST URL派生。然而,GraphQL使用更复杂的HTTP POST格式,必须从HTTP正文中确定可缓存性和缓存密钥。理想情况是HTTP POST可以通过简单的翻转开关进行缓存,但事实并非如此简单。CDN必须能够解析和理解GraphQL的格式,以缓存GraphQL。而目前的CDN并不具备此项功能,为开发人员成熟驾驭GraphQL的性能增加了挑战。

开发团队通常要花时间从头开始建立解决方法来缓存GraphQL–即便如此,缓存也不是最佳选择。对GraphQL的错误管理会导致低的缓存命中率。然而,如果做得好的话,在边缘缓存GraphQL会导致更快、更可靠和可扩展的API。Layer0让这一切变得简单。

Layer0应对边缘缓存的挑战

Layer0提供了对边缘GraphQL APIs缓存的全面支持,从而获得更好的性能和更高的缓存命中率。Layer0通过向EdgeJS(一种高性能的、基于JavaScript的声明性语言,适用于边缘逻辑)添加 GraphQL 解析和对POST方法的支持,解决了在网络边缘缓存GraphQL APIs的关键挑战。使用 EdgeJS,网站建设者可以基于其GraphQL查询的属性和 HTTP头信息(例如 cookie 和身份验证)创建强大的自定义缓存逻辑。

开发人员可通过Layer0的EdgeJS从GraphQL响应中缓存诸如电子商务API中的产品ID等信息。它还可以缓存嵌入在请求头中的属性,例如语言、货币和个性化偏好等。这些可能由堆栈中尚未迁移到 GraphQL 的其他非 GraphQL 组件定义。

在缓存后,Layer0 能够通过为每个缓存的响应分配代理键,从边缘清除单个查询或查询集合。例如,在一个电子商务应用中,开发者可以使用EdgeJS,让团队能够通过使用Layer0控制台或API,按产品ID、产品类别或查询中的任何其他产品属性,有选择性地清除缓存。

联系我们.Contact Us

如需了解更多信息,请通过以下联系人联系我们,或在微信对话框中发送您的联系方式给我们,我们会尽快与您取得联系。

联系人:Simon Liu

联系邮箱:sliu@llnw.com

PRODUCTS