chore: add exclusion for N+1 API requests in collect_package_candidates function
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -15,5 +15,11 @@
|
|||||||
"title": "collect_package_candidates N+1 package fetch",
|
"title": "collect_package_candidates N+1 package fetch",
|
||||||
"reason": "在 `collect_package_candidates` 函數中,目前對 `INPUT_PACKAGE_NAMES` 的每個套件都分別呼叫 `fetch_package_versions`,導致 N+1 查詢與大量 API 請求,當套件數量多時會增加網路延遲與 Gitea 伺服器負載。建議:改為先一次或少次呼叫以取得 owner 下所有 NuGet 套件與其版本(例如用 `/api/v1/packages/${owner}?type=nuget` 或 `fetch_all_pages`),在本地用 `jq group_by(.name)` 或等效邏輯分組並依 `TARGET_PACKAGES` 篩選;如此可大幅減少不必要的 API 請求、網路流量與本地處理負擔,避免 N+1 問題並提升效能與擴展性。"
|
"reason": "在 `collect_package_candidates` 函數中,目前對 `INPUT_PACKAGE_NAMES` 的每個套件都分別呼叫 `fetch_package_versions`,導致 N+1 查詢與大量 API 請求,當套件數量多時會增加網路延遲與 Gitea 伺服器負載。建議:改為先一次或少次呼叫以取得 owner 下所有 NuGet 套件與其版本(例如用 `/api/v1/packages/${owner}?type=nuget` 或 `fetch_all_pages`),在本地用 `jq group_by(.name)` 或等效邏輯分組並依 `TARGET_PACKAGES` 篩選;如此可大幅減少不必要的 API 請求、網路流量與本地處理負擔,避免 N+1 問題並提升效能與擴展性。"
|
||||||
}
|
}
|
||||||
|
,
|
||||||
|
{
|
||||||
|
"location": "entrypoint.sh:176",
|
||||||
|
"title": "collect_package_candidates N+1 (explicit)",
|
||||||
|
"reason": "在 collect_package_candidates 函數中,程式碼從原本一次性獲取所有 NuGet 套件資訊(透過 fetch_all_pages 呼叫 /api/v1/packages/${REPO_OWNER}?type=nuget),改為針對 INPUT_PACKAGE_NAMES 中的每個套件名逐一呼叫 fetch_package_versions。若 INPUT_PACKAGE_NAMES 包含大量套件,這會導致大量獨立的 API 請求(N 個套件 * N 頁面),顯著增加網路延遲與 Gitea 伺服器負載,並且可能造成執行時間大幅增加。建議:考慮恢復到原始的資料擷取策略,先一次或少次取得所有套件與版本,然後在本地進行過濾與分組,以減少 API 呼叫數量。"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user