mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-11-15 07:12:09 +08:00
fix: frontend memory leaks — Monaco dispose, TQ cache eviction, useEffect cleanup
- Dispose Monaco editor instances on dialog close to prevent cycle leak - Replace gcTime: Infinity with finite TTLs and evict orphaned subscription queryKeys - Add missing useEffect cleanup for timers, move setTimeout out of useMemo
This commit is contained in:
@@ -42,7 +42,7 @@ export const useIconCache = ({
|
||||
refetchOnWindowFocus: false,
|
||||
refetchOnReconnect: false,
|
||||
staleTime: Infinity,
|
||||
gcTime: Infinity,
|
||||
gcTime: 30 * 60 * 1000,
|
||||
retry: 2,
|
||||
})
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@ export const useMihomoWsSubscription = <T>(
|
||||
subscriptionCacheKey ?? '$sub$__disabled__',
|
||||
]) ?? fallbackData,
|
||||
staleTime: Infinity,
|
||||
gcTime: Infinity,
|
||||
gcTime: 30_000,
|
||||
enabled: subscriptionCacheKey !== null,
|
||||
})
|
||||
|
||||
@@ -243,8 +243,11 @@ export const useMihomoWsSubscription = <T>(
|
||||
}, [subscriptionCacheKey])
|
||||
|
||||
const refresh = useCallback(() => {
|
||||
if (subscriptionCacheKey) {
|
||||
queryClient.removeQueries({ queryKey: [subscriptionCacheKey] })
|
||||
}
|
||||
setDate(Date.now())
|
||||
}, [setDate])
|
||||
}, [queryClient, subscriptionCacheKey, setDate])
|
||||
|
||||
return { response, refresh, subscriptionCacheKey, wsRef }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user