Рекомендации по Node.js: кеширование и REST

Как и любые другие приложения, приложения на JavaScript также должны быть хорошо написаны.

В противном случае позже мы столкнемся со всевозможными проблемами.

В этой статье мы рассмотрим некоторые передовые методы, которым следует следовать при написании приложений Node.

Включение кеширования с помощью Redis

Мы можем включить кеширование с помощью Redis, чтобы ускорить работу нашего приложения Express.

Для этого мы можем установить Redis, запустив:

apt update
apt install redis-server

Затем в /etc/redis/redis.conf меняем:

supervised no

to:

supervised systemd

Тогда Redis будет работать под Systemd.

Затем мы перезапускаем Redis, чтобы изменения вступили в силу:

systemctl restart redis
systemctl status redis

Затем мы устанавливаем модуль Redis NPM, запустив:

npm i redis

Затем мы можем использовать его, написав:

const express = require('express')
const app = express()
const redis = require('redis')
​
const redisClient = redis.createClient(6379)
​
async function getData(req, res, next) {
  try {
    //...
    redisClient.setex(id, 3600, JSON.stringify(data))
    res.status(200).send(data)
  } catch (err) {
    console.error(err)
    res.status(500)
  }
}
​
function cache (req, res, next) {
  const { id } = req.params
​
  redisClient.get(id, (err, data) => {
    if (err) {
      return res.status(500).send(err)
    }
    if (data !== null) {
      return res.status(200).send(data)
    }
    next()
  })
}
​
​
app.get('/data/:id', cache, getData)
app.listen(3000, () => console.log(`Server running on Port ${port}`))

Мы используем клиент Redis для приложений Node, чтобы создать клиент Redis.

Затем мы создаем cache промежуточное ПО, которое получает данные из кеша Redis, если он существует.

Мы отправляем данные ответа от Redis, если они есть.

Если это не так, мы вызываем наше getData промежуточное программное обеспечение маршрута, чтобы получить данные из базы данных.

Это делается с помощью метода redisClient.setex для установки данных.

См. также:  Демистификация переменных (Часть I)

Включение мониторинга и ведения журнала на уровне ВМ / сервера

Мы можем включить мониторинг сервера или виртуальной машины и ведение журнала с помощью различных инструментов.

Таким образом, мы можем отслеживать любые проблемы, возникающие в приложении.

Скрытые возможности NODE_ENV

NODE_ENV может существенно повлиять на производительность нашего Node-приложения.

Если мы установим его на production, кеширование будет включено, и данные будут кэшироваться.

Мы не хотим этого в разработке, так как мы всегда хотим видеть самые свежие данные.

Представления кэшируются в рабочей среде, но не в узле разработки.

Мы можем запустить его с заданным NODE_ENV с помощью:

NODE_ENV=<environment> node server.js

где server.js — точка входа в наше приложение.

В производственном режиме приложения Express не заняты постоянной обработкой шаблонов Pug.

ЦП может делать другие вещи из-за кэширования.

Мы можем установить NODE_ENV, запустив:

export NODE_ENV=production

в Linux и Mac OS.

В Windows мы можем запустить:

SET NODE_ENV=production

Мы можем запустить:

NODE_ENV=production node my-app.js

на всех платформах.

Используйте методы HTTP и маршруты API

Мы должны использовать методы HTTP и маршруты API, соответствующие соглашениям REST.

Например, мы можем написать:

  • POST /article или PUT /article:/id, чтобы создать новую статью.
  • GET /article для получения списка статей
  • GET /article/:id, чтобы получить статью
  • PATCH /article/:id для изменения существующего articlerecord
  • DELETE /article/:id, чтобы удалить статью

Если мы получим по идентификатору, в конце будет параметр идентификатора.

Заключение

Кэширование и установка для NODE_ENV production ускорения работы нашего приложения.

Соглашения REST полезны для обеспечения единообразия наших API.

JavaScript на простом английском языке

Вы знали, что у нас есть три публикации и канал на YouTube? Найдите ссылки на все на plainenglish.io!

Понравилась статья? Поделиться с друзьями:
IT Шеф
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: