From d8c06c7f6c52b792fcec642ed67fc5450a79d9e0 Mon Sep 17 00:00:00 2001 From: hkfires <10558748+hkfires@users.noreply.github.com> Date: Mon, 24 Nov 2025 20:53:37 +0800 Subject: [PATCH] feat: cap log fetch size and add limit query param --- app.js | 2 ++ src/modules/logs.js | 14 +++++++++++++- src/utils/constants.js | 6 ++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/app.js b/app.js index f88b5e1..2a89e0c 100644 --- a/app.js +++ b/app.js @@ -20,6 +20,7 @@ import { debounce } from './src/utils/dom.js'; import { CACHE_EXPIRY_MS, MAX_LOG_LINES, + LOG_FETCH_LIMIT, DEFAULT_AUTH_FILES_PAGE_SIZE, MIN_AUTH_FILES_PAGE_SIZE, MAX_AUTH_FILES_PAGE_SIZE, @@ -78,6 +79,7 @@ class CLIProxyManager { // 当前展示的日志行 this.displayedLogLines = []; this.maxDisplayLogLines = MAX_LOG_LINES; + this.logFetchLimit = LOG_FETCH_LIMIT; // 日志时间戳(用于增量加载) this.latestLogTimestamp = null; diff --git a/src/modules/logs.js b/src/modules/logs.js index a83fdc7..0c8ed6b 100644 --- a/src/modules/logs.js +++ b/src/modules/logs.js @@ -20,8 +20,20 @@ export const logsModule = { } let url = '/logs'; + const params = new URLSearchParams(); + if (incremental && this.latestLogTimestamp) { - url += `?after=${this.latestLogTimestamp}`; + params.set('after', this.latestLogTimestamp); + } + + const logFetchLimit = Number.isFinite(this.logFetchLimit) ? this.logFetchLimit : 2500; + if (logFetchLimit > 0) { + params.set('limit', logFetchLimit); + } + + const queryString = params.toString(); + if (queryString) { + url += `?${queryString}`; } const response = await this.makeRequest(url, { diff --git a/src/utils/constants.js b/src/utils/constants.js index 65bf533..a7d4f94 100644 --- a/src/utils/constants.js +++ b/src/utils/constants.js @@ -53,6 +53,12 @@ export const OAUTH_MAX_POLL_DURATION_MS = 5 * 60 * 1000; */ export const MAX_LOG_LINES = 2000; +/** + * 日志接口获取数量上限 + * 限制后端返回的日志行数,避免一次拉取过多数据 + */ +export const LOG_FETCH_LIMIT = 2500; + /** * 认证文件列表默认每页显示数量 */