infinityloop-dev/graphpinator-persisted-queries
最新稳定版本:v2.0.2
Composer 安装命令:
composer require infinityloop-dev/graphpinator-persisted-queries
包简介
Module to persist validated query in cache and improve performace of repeating queries.
README 文档
README
⚡🌐⚡ Module to persist validated query in cache and improve performace of repeating queries.
Introduction
This Module allows GraPHPinator to cache queries on the server to reduce server load. This module aims to reduce GraphQL overhead in parsing and validation by caching and reusing known requests.
Please note that this module does not affect the speed of your resolver functions.
Installation
Install package using composer
composer require infinityloop-dev/graphpinator-persisted-queries
How to use
- Implement
\Psr\SimpleCache\CacheInterface
You need implementation of \Psr\SimpleCache\CacheInterface where the serialized version of request is stored for later reuse.
- Register
PersistedQueriesModuleas GraPHPinator module:
$persistModule = new \Graphpinator\PersistedQueriesModule\PersistedQueriesModule($schema, $cacheImpl); $graphpinator = new \Graphpinator\Graphpinator( $schema, $catchExceptions, new \Graphpinator\Module\ModuleSet([$persistModule, /* possibly other modules */]), $logger, );
- You are all set, queries are automatically cached in specified storage.
Performance improvements
Simple benchmark (code in bench directory) shows approximatelly 80% reduction of GraphQL overhead.
Benchmark runs the same query 10k times, with 5 warmup queries before. Cache in use is a simple implementation using Redis on localhost, connection is done using php-redis extension. Opcache was disabled.
| CPU model | Time WITHOUT module | Time WITH module |
|---|---|---|
| Ryzen 5900X | ~12.44 s | ~2.16 s |
| Ryzen 5600X (using VMware) | ~24.83 s | ~4.69 s |
| Ryzen 5 3600 | ~14.97 s | ~2.77 s |
统计信息
- 总下载量: 17.6k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 1
- 依赖项目数: 3
- 推荐数: 1
其他信息
- 授权协议: MIT
- 更新时间: 2021-06-29