Учрежден了一批 комментариев и кода.
Примечание: В данном случае перевод может потребовать корректировки для обеспечения смысла операции. "清理了一些注释和代码" более точно будет звучать как "Удалил некоторые комментарии и код". Однако, если контекст позволяет понять, что действия были направлены на организацию или упорядочение кода и комментариев, то вариант "Учрежден了一批 комментариев и кода" также имеет право на существование в зависимости от культурной интерпретации слова "清理".
Для точности перевода лучше использовать:
"Удалил некоторые комментарии и код."
Примечание: В данном случае перевод может потребовать корректировки для обеспечения смысла операции. "清理了一些注释和代码" более точно будет звучать как "Удалил некоторые комментарии и код". Однако, если контекст позволяет понять, что действия были направлены на организацию или упорядочение кода и комментариев, то вариант "Учрежден了一批 комментариев и кода" также имеет право на существование в зависимости от культурной интерпретации слова "清理".
Для точности перевода лучше использовать:
"Удалил некоторые комментарии и код."
Используйте unitTime для управления расписанием очистки записей IP-адресов.
let app = new titbit({
strong: true
})
app.run(1234)
ctx.res.body
равен null
или пустой строке — данные не возвращаются.ctx.res.body
равен null
или пустой строке — данные не возвращаются.app.get('/null', async c => {
c.res.body = null
})
requestTimeout
установлен в значение 35000 (35 seconds).headersTimeout
имеет значение по умолчанию 3500.maxHeadersCount
имеет значение по умолчанию 36.app.server
, чтобы сохранять экземпляр, созданный с помощью методов http.createServer
и http.createSecureServer
.maxConcurrentStreams
равным 100.maxHeaderListSize
равным 16368 байт.const app = new titbit()
app.run(1234)
// Установка времени ожидания запроса в 50 секунд (50000 миллисекунд) для защиты от атак типа DDOS.
app.server.requestTimeout = 50000
titbit.js Улучшена структура кода функции демона.
monitor.js Проверяет, если sendInterval не равен null, то больше не устанавливает таймер.
Обновление обработки ошибок при запросах для http1 и http2.
Обработку ошибок можно настроить, переопределив функцию requestError.
const app = new titbit()
app.httpServ.requestError = (err, handle, another) => {
console.error(err)
console.error(handle)
}
handle
— это экземпляр текущего запроса; в случае с http1 он может быть либо IncomingMessage, либо ServerResponse, а в случае с http2 — stream.
Экземпляр handle
всегда будет представлять объект, который вызвал событие error для данного запроса.
another
в случае с http1 зависит от типа ошибки и может быть либо ServerResponse, либо IncomingMessage; другими словами, один из этих объектов представляет запрос, другой — ответ.
another
в случае с http2 представляет заголовки.
http1.js проверяет длину URL до установки глобального логирования.
в обработчике события clientError в http1.js добавлена проверка ошибочного кода.
в http1.js через конфигурацию определяется, следует ли добавлять real_ip в глобальное логгирование.
http2.js проверяет длину URL до установки глобального логирования.
в http2.js через конфигурацию определяется, следует ли добавлять real_ip в глобальное логгирование.
в titbit.js добавлено опциональное поле realIP для контроля записи real_ip в глобальном логгировании.
После введения пула кэширования контекста, возможно, что заголовки сообщений, установленные предыдущим запросом, будут распространяться на другие запросы из-за неправильной очистки кэша.
Эта проблема затрагивает только http2, использование протокола HTTP/1.1 не влияет на это.
Для предыдущих версий этой проблемы, если невозможно или не требуется обновление до новой версии, можно исправить её с помощью промежуточного слоя:
app.pre(async (c, next) => {
c.res.headers = {}
await next()
})
В тестах makeId было показано, что уже при 10 цифрах достигается достаточно низкая вероятность конфликтов; каждый цикл тестирования выполнялся 8 миллионов раз, в течение 10 тестов, где максимальное количество конфликтов для 10-значной строки составило 16, а для 11-значной — не было зафиксировано ни одного конфликта.
При распределенной системе рекомендуется использовать uuid вместо makeId.
aesEncrypt
и aesDecrypt
, упростив операцию до использования только Base64-кодирования.uuid
возвращает два режима: стандартный 8-4-4-4-12 и сжатый 8-2-2-2-4, при передаче true
в качестве последнего аргумента.makeId
, которая возвращает случайную строку по умолчанию длиной 12 символов, поддерживающую передачу аргумента для управления длиной строки.sha1
, md5
, sha256
, sha512
поддерживают установку последнего аргумента для выбора кодировки выходных данных, по умолчанию hex.UUID в режиме short возвращает строку типа a623fa36-6f-5w-9n-6w56 и всё ещё гарантирует хорошую уникальность.
Функция
makeId
гарантирует хорошую уникальность при использовании значений 12 символов и более, рекомендуется избегать использования значений менее 12 символов для генерации уникальных ID.