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