GraphQL是一种流行的查询语言,用于读取和变换API中的数据,也是向无外设网站发展趋势的关键技术。 它允许Web构建人员使其API层灵活,强大和高效。 但是,开发人员在网络边缘缓存GraphQL API时面临挑战。 为此,Edgio开发了一个解决方案,使GraphQL的边缘缓存变得容易,并允许团队在无服务器的环境中托管GraphQL服务器。 GraphQL缓存填补了无头和API优先的Web应用程序市场中的空白,并证明了Layer0和Limelight联合力量的价值。
什么是GraphQL
GraphQL查询语言在传统的REST API基础上得到了改进,并在开发人员中得到了巨大的增长和采用。 GraphQL最初在Facebook孵化,后来开源,GraphQL提供声明性,高效的数据提取,显著提高了性能。 最重要的是,客户端和服务器之间的强类型架构使团队能够更快,独立地迭代其API,而不会引起版本控制问题。
GraphQL可与任何后端框架或编程语言配合使用。 GraphQL的这一优点,加上强大的工具(即强大的键入功能和内置的内省支持),使GraphQL特别受来自使用无头或API优先架构的企业组织的开发人员的欢迎,如Twitter和Airbnb。 在JS年度调查中,GraphQL在开发人员的认知度(98 %),满意度(94 %)和兴趣(87 %)方面的得分最高,高于任何其他数据层解决方案。
边缘GraphQL的高速缓存问题
传统的CDN和缓存软件围绕REST API构建,在这些API中,只有HTTP GET请求可缓存,缓存密钥可从REST URL派生。 遗憾的是,GraphQL使用更复杂的HTTP POST格式,缓存能力和缓存密钥必须由HTTP主体确定。 虽然如果仅仅是一个切换开关就可以缓存HTTP POST会很好,但这并不是那么简单。 要缓存GraphQL,CDN必须能够解析和理解GraphQL格式,这是他们无法做到的。 因此,GraphQL性能对开发人员来说是一个挑战。
开发团队通常会花时间构建从零到缓存GraphQL的变通办法,即使如此,缓存也不是最佳的。 GraphQL管理不当会导致较低的高速缓存命中率。 但是,如果操作正确,则在边缘缓存GraphQL可获得更快,更可靠和可伸缩的API。 Layer0让这一切变得简单。
Layer0解决了网络边缘的缓存难题
Layer0完全支持在边缘缓存GraphQL API,从而提高性能并减少源站的流量。 Layer0通过将GraphQL解析和POST方法支持添加到EdgeJS (一种高性能,基于JavaScript的边缘逻辑声明语言),解决了在网络边缘缓存GraphQL API的关键挑战。 借助EdgeJS,Web建设者可以根据其GraphQL查询和HTTP标头(如Cookie和身份验证)的属性创建强大的自定义缓存逻辑。
借助Layer0的EdgeJS,开发人员可以从GraphQL响应缓存电子商务API中的产品ID等信息。 它还可以缓存嵌入在请求标头中的语言,货币和个性化首选项等属性。 这些可能由堆栈中尚未迁移到GraphQL的其他非GraphQL组件定义。
缓存后,Layer0允许您通过为每个缓存响应分配代理键来从边缘清除单个或多个查询集合。 例如,在电子商务应用程序中,开发人员可以使用EdgeJS为团队提供在查询Layer0 (Edgio)控制台或API中按产品ID,产品类别或任何其他产品属性有选择地清除缓存的能力。
要更详细地理解这一点,请观看下面的演示,了解如何使用流行的Next.js框架,阿波罗和Layer0将REST API转换为GraphQL以及在边缘添加缓存。
实现100%高速缓存命中率
没有其他CDN能像Layer0那样努力地让团队最大限度地提高缓存命中率。 EdgeJS使开发人员可以轻松地从其应用程序中配置缓存,使开发人员能够缓存以前无法缓存的缓存。
EdgeJS是灵活且强大的,支持现代缓存功能,如过时而重新验证和代理密钥。 我们的客户已经使用代理键将Layer0连接到订单和内容管理系统,以便在库存,价格或内容发生变化时从缓存中清除单个商品页面。 这使他们能够为所有其他页面和API保持较高的高速缓存命中率,这些页面和API在单个项目发生更改时未发生更改。
此外,该平台还包括在部署后自动缓存预热最高流量内容。 Layer0网络智能地协调POP之间的路由和缓存,以最大限度地提高缓存命中的可能性。 如果POP没有数据片段,它将在将请求转发到源服务器之前从另一个POP执行请求。 为了轻松监控网站性能和缓存命中率,开发人员可以访问可观察性和关键指标。 为实现粒度,该平台主动突出显示需要改进的应用程序路由。
Edgio深受全球最大的流媒体公司的信赖,包括英超足球俱乐部和BYJU。 Edgio在全球拥有超过135个入网点(POP),这些接入点超越了CDN的平均功能,能够相互协调数据以加热缓存。
GraphQL的无服务器托管
Edgio还提供无服务器服务,包括GraphQL托管。 团队可以管理运行时调用并提交到Layer0上无服务器环境中托管的GraphQL服务器,从而消除对基础设施和规模的担忧。
提高Edgio上的工作效率,性能和安全性
Layer0帮助Web构建团队提高开发人员的工作效率,提高网站性能并提高安全性。 Layer0可在整个开发生命周期内轻松开发和维护边缘逻辑,并通过预测性预取动态内容交付次秒级网站,使其成为开发团队喜爱使用的CDN。
Layer0包含所有开发内容,DevOps团队实施无外设或Jamstack架构所需的一切,包括托管,无服务器,可观察性,RUM和CI/CD集成。 团队可以灵活地利用Layer0。 他们可以使用它来缓存GraphQL API,在无服务器环境中运行GraphQL服务器或托管整个无外设应用程序。 Layer0还具有强大的路由选项,使团队能够以零敲碎打的方式将旧式应用程序逐渐迁移到无外设或API优先架构。
GraphQL的支持和与传统系统的兼容性使Edgio成为迁移到GraphQL的大型企业的理想选择,并结合了传统和现代组件。