Сервер Graphql + NodeJS, хранение данных в кеше с помощью Redis - PullRequest
0 голосов
/ 29 мая 2018

Я хотел бы знать, как я могу улучшить время отклика от подключения graphql к api.Я решил использовать Redis.Я не знаю, как именно я должен это сделать.

Я построил свой сервер Graphql:

import express from 'express';
import {
    graphqlExpress,
    graphiqlExpress,
} from 'graphql-server-express';
import bodyParser from 'body-parser';

import { schema } from './src/schema';
import cors from 'cors';

import redis from 'redis';

const PORT = 4000;
const server = express();

const client = redis.createClient();

client.on('error', function (err) {
    console.log('error' + err)
});

server.use('*', cors({ origin: 'http://localhost:3000' }));

server.use('/graphql', bodyParser.json(), graphqlExpress({
    schema, context: { client }
}));


server.use('/graphiql', graphiqlExpress({
    endpointURL: '/graphql'
}));



server.listen(PORT, () =>
    console.log(`GraphQL Server is now running on http://localhost:${PORT}`)
);

Я уже импортировал Redis здесь.Мой сервер graphql связан с главной страницей cors, поэтому я могу отображать строки из API.В резольвере я подключаюсь к api с помощью Node.js (при необходимости добавлю его), и у меня есть несколько пользовательских резольверов.Время отклика от API (также влияет на рендеринг на странице) слишком медленно - около 10 ~ 15 с.

1 Ответ

0 голосов
/ 29 мая 2018

Я рекомендую проверить Apollo Engine , чтобы лучше понять, как работает GraphQL, и упростить использование надстроек, таких как кэш Redis.После того, как вы запустите Apollo Engine, вы можете использовать apollo-server-redis-cache для создания кеша.

Если ваши запросы занимают 10-15 с без кеша, я бы также сначала попытался оптимизировать ихпрежде чем бросить Redis перед ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...