DacheQL — это инструмент разработчика с открытым исходным кодом, который использует высочайшую точность запросов GraphQL и реализует кэширование для повышения эффективности запросов вашего веб-сайта.

Что такое GraphQL?

GraphQL — это язык запросов для API и среда выполнения для выполнения этих запросов с вашими существующими данными. GraphQL предоставляет полное и понятное описание данных в вашем API, дает клиентам возможность запрашивать именно то, что им нужно, и ничего больше, упрощает развитие API с течением времени и предоставляет мощные инструменты разработчика.

С GraphQL вы можете указать, какие данные вы хотите запрашивать у своего API. Вы получите именно то, что вам нужно, не больше и не меньше. Запросы GraphQL всегда возвращают предсказуемые результаты.

Что такое кеш и зачем его использовать?

Проще говоря, кеш можно определить как высокоскоростное хранилище данных, в котором хранится подмножество данных. Это сделано для того, чтобы будущие запросы на эти данные обслуживались быстрее, чем при доступе к основному месту хранения данных. Но зачем нам использовать кеш? Это действительно имеет значение? Да!

79%клиентов, недовольных скоростью загрузки сайта, с меньшей вероятностью вернутся

1 из 4 посетителей покинет сайт, если загрузка займет более 4 секунд

Даже разница в однусекунду может привести к снижению количества конверсий на 7%.

Производительность имеет значение.

Здесь на помощь приходит DacheQL!

С DacheQL вы можете автоматически кэшировать запросы GraphQL с помощью простой настройки. Если вы используете DacheQL впервые, посетите наш веб-сайт по адресу https://dacheql.com/, чтобы лучше понять DacheQL.

Если вы готовы начать работу с DacheQL, обратитесь к нашей документации!

Установка и настройка

Если вы не установили dacheql, выполните следующую команду, чтобы установить DacheQL в свое приложение:
npm install dacheql

Теперь, когда вы установили DacheQL, в файле вашего сервера вам нужно будет указать наше промежуточное ПО для обработки запросов GraphQL с использованием формата CommonJS:
const dacheql = require(‘dacheql’);

Использование DacheQL с Redis

DacheQL можно использовать двумя способами. Первый способ использовать DacheQL — это использовать его с Redis, хранилищем данных с открытым исходным кодом в памяти, которое можно использовать для кэширования на стороне клиента. Вам нужно убедиться, что Redis уже установлен на вашем компьютере. Если вы этого не сделали и хотите использовать Redis, обратитесь к документации Redis здесь.

Как только ваш клиент Redis будет подключен, просто передайте его в нашу функцию DacheQL следующим образом:
app.use(‘/graphql’, dacheQL({ redis } = {<redis: client>}, capacity, endpoint, TTL), expressGraphQL({ schema: schema, graphiql: true, }));

Просто замените <redis: client> на redis: *name of your client*

Поскольку мы используем Redis, второй параметр capacity не имеет значения, так как он используется для нашего кэша LRU. Вы можете просто заменить capacity чем-то произвольным, например 50.

Третий параметр — это конечная точка, в которой вы фактически используете GraphQL. Эта конечная точка может быть чем-то вроде https://localhost:3000/graphql

Наш последний параметр TTL указывает время жизни в кэше Redis. Просто введите время, в течение которого вы хотите, чтобы запрос сохранялся в кеше, в секундах. (Пример: 50) Теперь вы можете кэшировать ответы GraphQL с помощью Redis!

Использование DacheQL с нашим настраиваемым кешем политик вытеснения LRU

Если вы не используете кэширование Redis, DacheQL предоставляет промежуточное ПО для кэширования с использованием памяти сервера с нашим настраиваемым кешем, который ведет себя в соответствии с политикой вытеснения LRU. Аргументы, которые вы должны ввести для этого промежуточного программного обеспечения, следующие:

Для первого параметра, поскольку вы не используете Redis, просто передайте пустой объект {} вот так.

Далее следует емкость, которую вы хотели бы иметь в своем кеше. Эта емкость относится к тому, когда наш кеш начнет вытеснять элементы. Например, если вы установите емкость на 50, элемент будет удален после 51-го уникального запроса. Следует отметить, что если вы передадите нецелое число, оно будет для вас округлено в меньшую сторону. Нецелые числа, отрицательные числа и емкости меньше двух по умолчанию просто создают выборку GraphQL без сохранения значений в кеше.

Третий параметр — это конечная точка, в которой вы фактически используете GraphQL. Например, это может быть https://localhost:3000/graphql.

Наш последний параметр — это время жизни, или как долго вы хотите, чтобы этот конкретный запрос оставался в вашем кеше. Поскольку мы здесь не используем Redis, просто передайте что-нибудь для вашего TTL, так как наш кеш не зависит от этой информации. Теперь вы можете кэшировать свои ответы GraphQL с помощью нашей пользовательской политики вытеснения LRU!

Как внести свой вклад

Если вы хотите внести свой вклад в DacheQL, посетите DacheQL на GitHub!

Заключительные мысли

В быстро меняющейся технической среде скорость работы веб-сайтов сейчас важна как никогда. DacheQL упрощает процесс кэширования ваших запросов GraphQL, чтобы разработчик мог повысить производительность своих приложений. Если вам понравился наш простой в использовании пакет NPM и эта статья, обязательно поставьте аплодисменты статье, подпишитесь на команду в Linkedin и Github и отметьте наш DacheQL GitHub звездочкой!

Команда DacheQL

Эндрю Мой @ Linkedin | Github
ChunHao Zheng @ Linkedin | Github
Итан Чуанг @ Linkedin | Github
Сэнди Лю @ Linkedin | Гитхаб