Layer0 by Limelight无服务器托管助您实现GraphQL APIs在边缘的缓存

发布于:2022-12-31 ⋅ 阅读:(630) ⋅ 点赞:(0)

 

使用Layer0无服务器托管进行GraphQL APIs在边缘缓存,助您在源站实现更好的性能和更少的流量。基于cookies、验证、URL模式和HTTP消息头创建强大的自定义缓存逻辑。

作为流行的查询语言,GraphQL用于读取和突变API中的数据,是无头网站趋势中的一种关键技术。web开发者能够借此创建更灵活、强大且高效的API层。然而,开发者在网络边缘缓存GraphQL APIs时却碰到了麻烦。Layer0 by Limelight为此开发出了易于进行GraphQL边缘缓存的解决方案,团队能够在无服务器环境中托管GraphQL服务器。GraphQL缓存填补了无头和API优先网络应用的市场空白,证明了Layer0和Limelight联手的价值。

什么是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可以通过简单的切换来缓存,那就太好了,但并没那么简单。为了缓存GraphQL,CDN必须能够解析和理解GraphQL格式,然而他们做不到。因此GraphQL性能对开发人员而言是个挑战。

对于开发团队来说,花时间从头开始建立解决方法来缓存GraphQL是很常见的,但即使如此,缓存效果也不是最佳的。GraphQL管理不当会导致缓存命中率低。然而如果做得好,在边缘缓存GraphQL会带来更快、更可靠和可扩展的APIs。Layer0让这一切变得简单。

Layer0解决了网络边缘的缓存难题

Layer0全面支持在边缘缓存GraphQL APIs,实现更高的性能以及源站更低的流量。Layer0通过向EdgeJS添加GraphQL解析和对POST方法的支持,解决了在网络边缘缓存GraphQL APIs的关键挑战。EdgeJS是一种用于边缘逻辑的高性能、基于JavaScript的声明性语言。基于GraphQL查询和HTTP消息头(如cookies和验证)的属性, web开发者可以使用EdgeJS创建强大的自定义缓存逻辑。

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

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

要更详细地理解这一点,请观看下面的演示,讲述如何使用流行的Next.js框架、Apollo Server和Layer0将REST API转换为GraphQL并在边缘添加缓存。

实现100%的缓存命中率

没有任何其他CDN像Layer0这样高强度工作,让团队最大限度地提高缓存命中率。EdgeJS使开发人员可以轻松地从应用程序中配置缓存,使开发人员能够缓存以前无法缓存的内容。

EdgeJS灵活而强大,支持现代缓存功能,如stale-while-revalidate和代理键。我们的客户已经使用代理键将Layer0连接到订单和内容管理系统,以便当库存、价格或内容发生变化时,可以从缓存中清除个别产品页面。这样,当个别项目发生变化时,他们可以对所有其他没有变化的页面和APIs保持较高的缓存命中率。

此外,该平台还能够在部署后对流量最大的内容进行自动缓存预热。Layer0网络智能地协调POP之间的路由和缓存,尽可能实现缓存命中最大化。如果一个POP没有某项数据,它将在请求被转发到源服务器之前向另一个POP请求数据。为了方便监测网站性能和缓存命中率,开发人员可以访问可观察性和关键指标。针对细化,该平台主动突出强调需要改进的应用程序路由。

Layer0的GraphQL缓存是由Limelight的私有全球骨干网提供支持。Limelight Networks受到全球最大的流媒体公司的信任,包括英超足球俱乐部和迪士尼BYJU。Limelight在全球拥有超过135个入网点(POP),超越了CDN的一般功能,并在彼此之间协调数据,以预热缓存。

GraphQL无服务器托管

Layer0也提供包括GraphQL托管在内的无服务器服务。团队可以管理运行时调用并提交给GraphQL服务器,该服务器托管在Layer0上的无服务器环境中,消除了对基础设施和规模的担忧。

提升Layer0的生产力、性能和安全性

Layer0帮助web开发团队提高开发人员的工作效率,提升站点性能,并提高安全性。Layer0可以在整个开发生命周期中轻松开发和维护边缘逻辑,并通过动态内容的预测性预抓取交付亚秒级网站,使其成为开发团队喜欢使用的CDN。

Layer0包括开发和DevOps团队实施无头或Jamstack架构所需要的一切,包括托管、无服务器、可观察性、RUM和CI/CD集成。团队可以灵活地利用Layer0。可以用来缓存GraphQL APIs,在无服务器环境中运行GraphQL服务器,或者托管整个无头应用程序。Layer0还具有强大的路由选项,使团队能够以渐进的方式将遗留应用程序逐渐迁移到无头或API优先的架构。

对GraphQL的支持和对遗留系统的兼容性的结合,使得Layer0非常适合迁移到混合了传统和现代组件的GraphQL的大型企业。


网站公告

今日签到

点亮在社区的每一天
去签到