Skip to content

Commit 4f61542

Browse files
Updated Throughput tests (#275)
1 parent c68efd8 commit 4f61542

16 files changed

Lines changed: 265 additions & 18 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
import { testData } from '../../../testdata/src/ssr'
3+
const entries = await testData()
4+
---
5+
6+
<html lang="en">
7+
<head>
8+
<meta charset="utf-8" />
9+
<meta name="viewport" content="width=device-width" />
10+
<title>Astro SSR Throughput Benchmark</title>
11+
</head>
12+
<body>
13+
<table>
14+
<tbody>
15+
{
16+
entries.map((entry) => (
17+
<tr>
18+
<td>{entry.id}</td>
19+
<td>{entry.name}</td>
20+
</tr>
21+
))
22+
}
23+
</tbody>
24+
</table>
25+
</body>
26+
</html>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { testData } from '../../../testdata/src/ssr'
2+
import { Table } from './table'
3+
4+
export const dynamic = 'force-dynamic'
5+
6+
export default async function SSRThroughputPage() {
7+
return <Table data={await testData()} />
8+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
'use client'
2+
import type { TableEntry } from '../../../testdata/src/ssr'
3+
4+
export function Table({ data }: { data: TableEntry[] }) {
5+
return (
6+
<table>
7+
<tbody>
8+
{data.map((entry) => (
9+
<tr key={entry.id}>
10+
<td>{entry.id}</td>
11+
<td>{entry.name}</td>
12+
</tr>
13+
))}
14+
</tbody>
15+
</table>
16+
)
17+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<script setup lang="ts">
2+
import { testData } from '../../../testdata/src/ssr'
3+
4+
const { data } = await useAsyncData(() => testData(), { deep: false })
5+
</script>
6+
7+
<template>
8+
<table>
9+
<tbody>
10+
<tr v-for="entry in data" :key="entry.id">
11+
<td>{{ entry.id }}</td>
12+
<td>{{ entry.name }}</td>
13+
</tr>
14+
</tbody>
15+
</table>
16+
</template>

packages/app-react-router/app/routes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ export default [
66
route('/client-side-rendered/:id', 'routes/client-side-rendered.detail.tsx'),
77
route('/server-side-rendered', 'routes/server-side-rendered.tsx'),
88
route('/server-side-rendered/:id', 'routes/server-side-rendered.detail.tsx'),
9+
route('/ssr-throughput', 'routes/ssr-throughput.tsx'),
910
] satisfies RouteConfig
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { testData } from '../../../testdata/src/ssr'
2+
import type { Route } from './+types/ssr-throughput'
3+
4+
export async function loader() {
5+
const data = await testData()
6+
return { data }
7+
}
8+
9+
export default function SSRThroughputPage({
10+
loaderData,
11+
}: Route.ComponentProps) {
12+
return (
13+
<table>
14+
<tbody>
15+
{loaderData.data.map((entry) => (
16+
<tr key={entry.id}>
17+
<td>{entry.id}</td>
18+
<td>{entry.name}</td>
19+
</tr>
20+
))}
21+
</tbody>
22+
</table>
23+
)
24+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { For } from 'solid-js'
2+
import { query, createAsync } from '@solidjs/router'
3+
import { testData } from '../../../../testdata/src/ssr'
4+
5+
const getData = query(async () => {
6+
'use server'
7+
return await testData()
8+
}, 'ssr-throughput-data')
9+
10+
export const route = {
11+
preload: () => getData(),
12+
}
13+
14+
export default function SSRThroughputPage() {
15+
const data = createAsync(() => getData())
16+
17+
return (
18+
<table>
19+
<tbody>
20+
<For each={data()}>
21+
{(entry) => (
22+
<tr>
23+
<td>{entry.id}</td>
24+
<td>{entry.name}</td>
25+
</tr>
26+
)}
27+
</For>
28+
</tbody>
29+
</table>
30+
)
31+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { testData } from '../../../../testdata/src/ssr'
2+
3+
export const load = async () => {
4+
return { entries: await testData() }
5+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<script lang="ts">
2+
import type { PageData } from './$types'
3+
4+
let { data }: { data: PageData } = $props()
5+
</script>
6+
7+
<table>
8+
<tbody>
9+
{#each data.entries as entry}
10+
<tr>
11+
<td>{entry.id}</td>
12+
<td>{entry.name}</td>
13+
</tr>
14+
{/each}
15+
</tbody>
16+
</table>

packages/app-tanstack-start-react/src/routeTree.gen.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,18 @@
99
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
1010

1111
import { Route as rootRouteImport } from './routes/__root'
12+
import { Route as SsrThroughputRouteImport } from './routes/ssr-throughput'
1213
import { Route as ServerSideRenderedRouteImport } from './routes/server-side-rendered'
1314
import { Route as ClientSideRenderedRouteImport } from './routes/client-side-rendered'
1415
import { Route as IndexRouteImport } from './routes/index'
1516
import { Route as ServerSideRenderedIdRouteImport } from './routes/server-side-rendered_.$id'
1617
import { Route as ClientSideRenderedIdRouteImport } from './routes/client-side-rendered_.$id'
1718

19+
const SsrThroughputRoute = SsrThroughputRouteImport.update({
20+
id: '/ssr-throughput',
21+
path: '/ssr-throughput',
22+
getParentRoute: () => rootRouteImport,
23+
} as any)
1824
const ServerSideRenderedRoute = ServerSideRenderedRouteImport.update({
1925
id: '/server-side-rendered',
2026
path: '/server-side-rendered',
@@ -45,13 +51,15 @@ export interface FileRoutesByFullPath {
4551
'/': typeof IndexRoute
4652
'/client-side-rendered': typeof ClientSideRenderedRoute
4753
'/server-side-rendered': typeof ServerSideRenderedRoute
54+
'/ssr-throughput': typeof SsrThroughputRoute
4855
'/client-side-rendered/$id': typeof ClientSideRenderedIdRoute
4956
'/server-side-rendered/$id': typeof ServerSideRenderedIdRoute
5057
}
5158
export interface FileRoutesByTo {
5259
'/': typeof IndexRoute
5360
'/client-side-rendered': typeof ClientSideRenderedRoute
5461
'/server-side-rendered': typeof ServerSideRenderedRoute
62+
'/ssr-throughput': typeof SsrThroughputRoute
5563
'/client-side-rendered/$id': typeof ClientSideRenderedIdRoute
5664
'/server-side-rendered/$id': typeof ServerSideRenderedIdRoute
5765
}
@@ -60,6 +68,7 @@ export interface FileRoutesById {
6068
'/': typeof IndexRoute
6169
'/client-side-rendered': typeof ClientSideRenderedRoute
6270
'/server-side-rendered': typeof ServerSideRenderedRoute
71+
'/ssr-throughput': typeof SsrThroughputRoute
6372
'/client-side-rendered_/$id': typeof ClientSideRenderedIdRoute
6473
'/server-side-rendered_/$id': typeof ServerSideRenderedIdRoute
6574
}
@@ -69,20 +78,23 @@ export interface FileRouteTypes {
6978
| '/'
7079
| '/client-side-rendered'
7180
| '/server-side-rendered'
81+
| '/ssr-throughput'
7282
| '/client-side-rendered/$id'
7383
| '/server-side-rendered/$id'
7484
fileRoutesByTo: FileRoutesByTo
7585
to:
7686
| '/'
7787
| '/client-side-rendered'
7888
| '/server-side-rendered'
89+
| '/ssr-throughput'
7990
| '/client-side-rendered/$id'
8091
| '/server-side-rendered/$id'
8192
id:
8293
| '__root__'
8394
| '/'
8495
| '/client-side-rendered'
8596
| '/server-side-rendered'
97+
| '/ssr-throughput'
8698
| '/client-side-rendered_/$id'
8799
| '/server-side-rendered_/$id'
88100
fileRoutesById: FileRoutesById
@@ -91,12 +103,20 @@ export interface RootRouteChildren {
91103
IndexRoute: typeof IndexRoute
92104
ClientSideRenderedRoute: typeof ClientSideRenderedRoute
93105
ServerSideRenderedRoute: typeof ServerSideRenderedRoute
106+
SsrThroughputRoute: typeof SsrThroughputRoute
94107
ClientSideRenderedIdRoute: typeof ClientSideRenderedIdRoute
95108
ServerSideRenderedIdRoute: typeof ServerSideRenderedIdRoute
96109
}
97110

98111
declare module '@tanstack/react-router' {
99112
interface FileRoutesByPath {
113+
'/ssr-throughput': {
114+
id: '/ssr-throughput'
115+
path: '/ssr-throughput'
116+
fullPath: '/ssr-throughput'
117+
preLoaderRoute: typeof SsrThroughputRouteImport
118+
parentRoute: typeof rootRouteImport
119+
}
100120
'/server-side-rendered': {
101121
id: '/server-side-rendered'
102122
path: '/server-side-rendered'
@@ -139,6 +159,7 @@ const rootRouteChildren: RootRouteChildren = {
139159
IndexRoute: IndexRoute,
140160
ClientSideRenderedRoute: ClientSideRenderedRoute,
141161
ServerSideRenderedRoute: ServerSideRenderedRoute,
162+
SsrThroughputRoute: SsrThroughputRoute,
142163
ClientSideRenderedIdRoute: ClientSideRenderedIdRoute,
143164
ServerSideRenderedIdRoute: ServerSideRenderedIdRoute,
144165
}

0 commit comments

Comments
 (0)