优化 modelCurve 接口的调用时机,加上缓存,减少调用频率
This commit is contained in:
@@ -520,6 +520,8 @@ function FreqChart({
|
||||
|
||||
|
||||
/* ── Main Component ── */
|
||||
const rawCurveCache = new Map<string, number[] | null>();
|
||||
|
||||
export default function EQPage() {
|
||||
const [, setLocation] = useLocation();
|
||||
const {
|
||||
@@ -610,6 +612,7 @@ export default function EQPage() {
|
||||
const [isConfirmingTarget, setIsConfirmingTarget] = useState(false);
|
||||
const [currentRawCurve, setCurrentRawCurve] = useState<number[] | null>(null);
|
||||
const [rawCurveLoading, setRawCurveLoading] = useState(false);
|
||||
const rawCurveCacheRef = useRef(rawCurveCache);
|
||||
const allowPeqRemoteSyncRef = useRef(false);
|
||||
const lastPeqCatalogSyncKeyRef = useRef("");
|
||||
const syncingHeadphoneRef = useRef(false);
|
||||
@@ -1219,6 +1222,17 @@ export default function EQPage() {
|
||||
const model = peq?.model?.trim() ?? "";
|
||||
if (!brand || !model) return null;
|
||||
|
||||
const cacheKey = `${brand}|${model}`;
|
||||
if (rawCurveCacheRef.current.has(cacheKey)) {
|
||||
const cached = rawCurveCacheRef.current.get(cacheKey);
|
||||
if (cached) {
|
||||
console.log("[modelCurve] cache hit", { brand, model, rawLength: cached.length });
|
||||
} else {
|
||||
console.log("[modelCurve] cache hit (no raw)", { brand, model });
|
||||
}
|
||||
return cached ?? null;
|
||||
}
|
||||
|
||||
const modelCurve = await getModelCurve(brand, model);
|
||||
if (modelCurve && typeof modelCurve === "object") {
|
||||
const payload = modelCurve as {
|
||||
@@ -1244,6 +1258,7 @@ export default function EQPage() {
|
||||
})
|
||||
: null;
|
||||
const cleanedRaw = raw && raw.every((v) => Number.isFinite(v)) ? (raw as number[]) : null;
|
||||
rawCurveCacheRef.current.set(cacheKey, cleanedRaw);
|
||||
console.log("[modelCurve] raw check", {
|
||||
brand,
|
||||
model,
|
||||
|
||||
Reference in New Issue
Block a user