Skip to content

Commit e5eec97

Browse files
authored
parallelize SSR fetches on the Popular page (#2418)
1 parent c63c8a0 commit e5eec97

1 file changed

Lines changed: 55 additions & 40 deletions

File tree

pages/popular.tsx

Lines changed: 55 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -15,48 +15,63 @@ const DEFAULT_QUERY = {
1515
};
1616

1717
PopularPage.getInitialProps = async (ctx: NextPageContext) => {
18-
const coreResponse = await ssrFetch(
19-
'/libraries',
20-
{ ...DEFAULT_QUERY, limit: '8', android: 'true', ios: 'true' },
21-
ctx
22-
);
23-
const androidResponse = await ssrFetch(
24-
'/libraries',
25-
{ ...DEFAULT_QUERY, android: 'true', ios: 'false' },
26-
ctx
27-
);
28-
const iosResponse = await ssrFetch(
29-
'/libraries',
30-
{ ...DEFAULT_QUERY, ios: 'true', android: 'false' },
31-
ctx
32-
);
33-
const webResponse = await ssrFetch('/libraries', { ...DEFAULT_QUERY, web: 'true' }, ctx);
34-
const macosResponse = await ssrFetch('/libraries', { ...DEFAULT_QUERY, macos: 'true' }, ctx);
35-
const tvosResponse = await ssrFetch('/libraries', { ...DEFAULT_QUERY, tvos: 'true' }, ctx);
36-
const visionosResponse = await ssrFetch(
37-
'/libraries',
38-
{ ...DEFAULT_QUERY, visionos: 'true' },
39-
ctx
40-
);
41-
const windowsResponse = await ssrFetch('/libraries', { ...DEFAULT_QUERY, windows: 'true' }, ctx);
42-
const expoGoResponse = await ssrFetch('/libraries', { ...DEFAULT_QUERY, expoGo: 'true' }, ctx);
43-
const fireosResponse = await ssrFetch('/libraries', { ...DEFAULT_QUERY, fireos: 'true' }, ctx);
44-
const horizonResponse = await ssrFetch('/libraries', { ...DEFAULT_QUERY, horizon: 'true' }, ctx);
45-
const vegaosResponse = await ssrFetch('/libraries', { ...DEFAULT_QUERY, vegaos: 'true' }, ctx);
18+
const [
19+
coreResponse,
20+
androidResponse,
21+
iosResponse,
22+
webResponse,
23+
macosResponse,
24+
tvosResponse,
25+
visionosResponse,
26+
windowsResponse,
27+
expoGoResponse,
28+
fireosResponse,
29+
horizonResponse,
30+
vegaosResponse,
31+
] = await Promise.all([
32+
ssrFetch('/libraries', { ...DEFAULT_QUERY, limit: '8', android: 'true', ios: 'true' }, ctx),
33+
ssrFetch('/libraries', { ...DEFAULT_QUERY, android: 'true', ios: 'false' }, ctx),
34+
ssrFetch('/libraries', { ...DEFAULT_QUERY, ios: 'true', android: 'false' }, ctx),
35+
ssrFetch('/libraries', { ...DEFAULT_QUERY, web: 'true' }, ctx),
36+
ssrFetch('/libraries', { ...DEFAULT_QUERY, macos: 'true' }, ctx),
37+
ssrFetch('/libraries', { ...DEFAULT_QUERY, tvos: 'true' }, ctx),
38+
ssrFetch('/libraries', { ...DEFAULT_QUERY, visionos: 'true' }, ctx),
39+
ssrFetch('/libraries', { ...DEFAULT_QUERY, windows: 'true' }, ctx),
40+
ssrFetch('/libraries', { ...DEFAULT_QUERY, expoGo: 'true' }, ctx),
41+
ssrFetch('/libraries', { ...DEFAULT_QUERY, fireos: 'true' }, ctx),
42+
ssrFetch('/libraries', { ...DEFAULT_QUERY, horizon: 'true' }, ctx),
43+
ssrFetch('/libraries', { ...DEFAULT_QUERY, vegaos: 'true' }, ctx),
44+
]);
45+
46+
const [core, android, ios, web, macos, tvos, visionos, windows, expoGo, fireos, horizon, vegaos] =
47+
await Promise.all([
48+
coreResponse.json(),
49+
androidResponse.json(),
50+
iosResponse.json(),
51+
webResponse.json(),
52+
macosResponse.json(),
53+
tvosResponse.json(),
54+
visionosResponse.json(),
55+
windowsResponse.json(),
56+
expoGoResponse.json(),
57+
fireosResponse.json(),
58+
horizonResponse.json(),
59+
vegaosResponse.json(),
60+
]);
4661

4762
return {
48-
core: await coreResponse.json(),
49-
android: await androidResponse.json(),
50-
ios: await iosResponse.json(),
51-
web: await webResponse.json(),
52-
macos: await macosResponse.json(),
53-
tvos: await tvosResponse.json(),
54-
visionos: await visionosResponse.json(),
55-
windows: await windowsResponse.json(),
56-
expoGo: await expoGoResponse.json(),
57-
fireos: await fireosResponse.json(),
58-
horizon: await horizonResponse.json(),
59-
vegaos: await vegaosResponse.json(),
63+
core,
64+
android,
65+
ios,
66+
web,
67+
macos,
68+
tvos,
69+
visionos,
70+
windows,
71+
expoGo,
72+
fireos,
73+
horizon,
74+
vegaos,
6075
};
6176
};
6277

0 commit comments

Comments
 (0)