Я сделал Api с express и некоторыми вещами из базы данных.
- Мой маршрутизатор динамически создается из отдельных файлов, а затем импортируется и используется в express
При первом запуске с первым запросом к API (не имеет значения какая конечная точка), пробег всегда длинный, можно получить до 10 секунд. Я предполагаю, что это потому, что он генерирует роутер на первом запуске? Есть ли способ загрузить его полностью сразу?
После нескольких других запросов к API, это намного быстрее. около 100-200мс. Но если я оставлю это неиспользованным и использую это снова после менуэта или двух, это снова медленно. Я думал, что это запросы к базе данных, но у меня есть несколько действительно простых и быстрых. Используя knex, я могу рассчитать время ожидания, и это кажется достаточно быстрым. Также я не создаю консольные журналы, так как знаю, что это тоже может замедлить.
Кроме того, я на самом деле использую сервер http узла, а затем использую express внутри него. Это все из-за этой структуры? или проблема может быть где-то еще?
мой главный сервер. js
import app from './createExpressApp'
const server = require('http').createServer()
server.on('request', app)
...
мой createExpressApp. js
import router from './app/routes/'
...
app.use('/api/v1',router)
.set('etag', false) //disable caching
.use((req, res, next) => {
// disable caching
res.set('Cache-Control', 'no-store, no-cache, must-revalidate, private')
next()
})
...
и мой индекс маршрутизатора. js
import { sync } from 'glob'
import { Router } from 'express'
var router = sync('**/*.js', { cwd: `${__dirname}/` })
.map((filename) => require(`./${filename}`).default)
.filter((router) => Object.getPrototypeOf(router) === Router)
.reduce(
(rootRouter, router) =>
rootRouter.use(router),
Router({ mergeParams: true })
)
export default router