PostgREST 12

PostgREST 12

💡 原文英文,约500词,阅读约需2分钟。
📝

内容提要

PostgREST 12发布,新增多个重要功能,包括JWT缓存以提高性能和减少请求时间,支持聚合函数(如avg、count等)以增强数据查询能力,以及用户自定义媒体类型,允许直接从数据库提供HTML等内容。该版本将很快在所有项目中推广。

🔎

延伸解读

JWT缓存带来的性能提升

PostgREST 12 引入了 JWT 缓存,首次请求后,JWT 会被缓存,并根据 exp 声明设置缓存生命周期。文章中的示例显示,启用缓存后,JWT 解码时间从 147.7 毫秒降至 14.1 毫秒,减少了超过 130 毫秒的服务器端处理时间。对于 API 调用量大的项目,这意味着更快的响应速度、更高的吞吐量和更低的资源消耗。

Server-Timing头部增强性能可见性

新版本增加了 Server-Timing 头部,可以显示请求处理各阶段的耗时,包括 JWT 解码、解析、计划、事务和响应等。例如,一个响应可能包含 jwt;dur=14.9、parse;dur=71.1、plan;dur=109.0、transaction;dur=353.2、response;dur=4.4。这为开发者提供了更细粒度的服务器端性能数据,有助于定位瓶颈。

聚合函数与分组查询

PostgREST 12 支持 avg、count、max、min、sum 等聚合函数。通过 select 参数可以调用聚合,例如 select=id.count() 返回计数结果。添加其他字段即可实现分组,如 select=title,id.count() 按 title 分组计数。聚合函数与资源嵌入完全兼容,提供了灵活的数据查询方式。

自定义媒体类型与直接提供HTML

新版本允许用户自定义媒体类型并覆盖内置类型,从而可以直接从数据库提供 HTML、JavaScript 等内容。文章示例创建了 text/html 域,并定义返回 HTML 的函数,通过 /rpc/index 访问即可渲染页面。这为构建动态内容提供了新可能,但文章也提到该功能的完整影响仍在探索中。

❓

Q&A

PostgREST 12的新功能有哪些?

PostgREST 12新增了JWT缓存、支持聚合函数和用户自定义媒体类型等功能。

JWT缓存如何提高PostgREST的性能?

JWT缓存可以在首次请求后缓存JWT,显著减少服务器处理时间,适合高API调用量的项目。

PostgREST 12支持哪些聚合函数?

PostgREST 12支持的聚合函数包括avg、count、max、min和sum。

如何使用PostgREST 12的用户自定义媒体类型功能?

用户可以创建自定义媒体类型,直接从数据库提供HTML等内容,增加灵活性。

PostgREST 12的Server-Timing头部有什么作用?

Server-Timing头部提供服务器性能可视化,记录各个处理阶段的时间。

PostgREST 12何时会在所有项目中推广?

PostgREST 12将很快在所有项目中推广,用户可关注Supabase Studio的通知。

🏷️

标签

➡️

继续阅读