@@ -18,12 +18,20 @@ export default defineNuxtRouteMiddleware(async (to) => {
1818 const tags = useGeneratedState ( )
1919 const projectId = to . params . id as string
2020
21+ // SSR timing for debugging (will be sent to client)
22+ const ssrTiming = useState < { projectV2 ?: number ; parallelPrefetch ?: number } > ( 'ssr-timing' , ( ) => ( { } ) )
23+
2124 try {
25+ const t0 = Date . now ( )
2226 const project = await queryClient . fetchQuery ( {
2327 queryKey : [ 'project' , 'v2' , projectId ] ,
2428 queryFn : ( ) => client . labrinth . projects_v2 . get ( projectId ) ,
2529 staleTime : 1000 * 60 * 5 ,
2630 } )
31+ if ( import . meta. server ) {
32+ ssrTiming . value . projectV2 = Date . now ( ) - t0
33+ console . log ( `[${ projectId } ] project-v2: ${ ssrTiming . value . projectV2 } ms` )
34+ }
2735
2836 // let page handle 404
2937 if ( ! project ) return
@@ -40,6 +48,7 @@ export default defineNuxtRouteMiddleware(async (to) => {
4048
4149 // Prefetch core project data in parallel using the resolved ID
4250 // Versions and dependencies are lazy-loaded client-side for performance
51+ const t1 = Date . now ( )
4352 await Promise . all ( [
4453 queryClient . prefetchQuery ( {
4554 queryKey : [ 'project' , 'v3' , id ] ,
@@ -59,6 +68,10 @@ export default defineNuxtRouteMiddleware(async (to) => {
5968 } )
6069 : Promise . resolve ( ) ,
6170 ] )
71+ if ( import . meta. server ) {
72+ ssrTiming . value . parallelPrefetch = Date . now ( ) - t1
73+ console . log ( `[${ projectId } ] parallel-prefetch: ${ ssrTiming . value . parallelPrefetch } ms` )
74+ }
6275
6376 // Determine the correct URL type
6477 const correctType = getProjectTypeForUrlShorthand (
0 commit comments