perf(ui): smaller initial page, slower idle polling
Photos grid was fetching per_page=500 on the very first request, which serialized hundreds of thumbnail requests behind a single sort+payload. Split into PER_PAGE_INITIAL=100 (one viewport, fast paint) and PER_PAGE_BACKGROUND=500 (subsequent prefetch pages, fewer round-trips). Idle polling for scan-status and worker-status was set to 10s / 15s respectively. With nothing queued the typical session was firing 4–6 status requests every minute through the single uvicorn event loop on top of everything else. Bumped both to 30s. While actively scanning / processing the 2s / 3s cadence is unchanged — that's where the user actually wants live updates. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -28,20 +28,20 @@ export function ScanProgress() {
|
||||
queryKey: ['scan-status'],
|
||||
queryFn: () => library.scanStatus(),
|
||||
refetchInterval: (query) =>
|
||||
query.state.data?.is_scanning ? 2000 : 10000,
|
||||
query.state.data?.is_scanning ? 2000 : 30000,
|
||||
enabled: true,
|
||||
})
|
||||
|
||||
const isScanning = scanStatus?.is_scanning ?? false
|
||||
|
||||
// Poll worker status to track vision queue activity.
|
||||
// Fast polling (3s) while processing, slow (15s) otherwise.
|
||||
// Fast polling (3s) while processing, slow (30s) otherwise.
|
||||
const { data: workerStatus } = useQuery<WorkerStatus>({
|
||||
queryKey: ['worker-status-progress'],
|
||||
queryFn: () => library.maintenance.workerStatus(),
|
||||
refetchInterval: (query) => {
|
||||
const q = totalQueued(query.state.data)
|
||||
return q > 0 ? 3000 : 15000
|
||||
return q > 0 ? 3000 : 30000
|
||||
},
|
||||
enabled: true,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user