From 592f7cc2e33ec145c6e3ee4a72a740562b6f2870 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Tue, 12 Nov 2024 14:49:16 +0100 Subject: [PATCH] dont recreate server every time --- packages/trace-viewer/src/sw/main.ts | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/packages/trace-viewer/src/sw/main.ts b/packages/trace-viewer/src/sw/main.ts index fd3e95eb22..1ce131020c 100644 --- a/packages/trace-viewer/src/sw/main.ts +++ b/packages/trace-viewer/src/sw/main.ts @@ -69,6 +69,22 @@ async function loadTrace(traceUrl: string, traceFileName: string | null, clientI return traceModel; } +const traceViewerServers = new Map(); + +function getTraceViewerServer(client?: any): TraceViewerServerBackend { + let traceViewerServerBaseUrl = self.registration.scope; + if (client?.url) { + const clientUrl = new URL(client.url); + if (clientUrl.searchParams.has('server')) + traceViewerServerBaseUrl = clientUrl.searchParams.get('server')!; + } + + if (!traceViewerServers.has(traceViewerServerBaseUrl)) + traceViewerServers.set(traceViewerServerBaseUrl, new TraceViewerServerBackend(traceViewerServerBaseUrl)); + + return traceViewerServers.get(traceViewerServerBaseUrl)!; +} + // @ts-ignore async function doFetch(event: FetchEvent): Promise { // In order to make Accessibility Insights for Web work. @@ -77,6 +93,7 @@ async function doFetch(event: FetchEvent): Promise { const request = event.request; const client = await self.clients.get(event.clientId); + const traceViewerServer = getTraceViewerServer(client); // When trace viewer is deployed over https, we will force upgrade // insecure http subresources to https. Otherwise, these will fail @@ -93,14 +110,6 @@ async function doFetch(event: FetchEvent): Promise { return new Response(null, { status: 200 }); } - let traceViewerServerBaseUrl = self.registration.scope; - if (client?.url) { - const clientUrl = new URL(client.url); - if (clientUrl.searchParams.has('server')) - traceViewerServerBaseUrl = clientUrl.searchParams.get('server')!; - } - const traceViewerServer = new TraceViewerServerBackend(traceViewerServerBaseUrl); - const traceUrl = url.searchParams.get('trace'); if (relativePath === '/contexts') {