Skip to content

Commit 5d5e280

Browse files
author
Peter Bengtsson
authored
faster contextualize() by doing things once (#23526)
1 parent 6008087 commit 5d5e280

1 file changed

Lines changed: 11 additions & 7 deletions

File tree

middleware/context.js

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,25 @@ const {
1919
} = pathUtils
2020
const featureFlags = Object.keys(readJsonFile('./feature-flags.json'))
2121

22+
// This doesn't change just because the request changes, so compute it once.
23+
const enterpriseServerVersions = Object.keys(allVersions).filter((version) =>
24+
version.startsWith('enterprise-server@')
25+
)
26+
27+
const featureFlagsObject = Object.fromEntries(
28+
featureFlags.map((featureFlagName) => [featureFlagName, process.env[featureFlagName]])
29+
)
30+
2231
// Supply all route handlers with a baseline `req.context` object
2332
// Note that additional middleware in middleware/index.js adds to this context object
2433
export default async function contextualize(req, res, next) {
2534
// Ensure that we load some data only once on first request
2635
const { site, redirects, siteTree, pages: pageMap } = await warmServer()
2736

28-
req.context = {}
37+
req.context = Object.assign({}, featureFlagsObject)
2938

3039
// make feature flag environment variables accessible in layouts
3140
req.context.process = { env: {} }
32-
featureFlags.forEach((featureFlagName) => {
33-
req.context[featureFlagName] = process.env[featureFlagName]
34-
})
3541

3642
// define each context property explicitly for code-search friendliness
3743
// e.g. searches for "req.context.page" will include results from this file
@@ -50,9 +56,7 @@ export default async function contextualize(req, res, next) {
5056
req.context.languages = languages
5157
req.context.productNames = productNames
5258
req.context.enterpriseServerReleases = enterpriseServerReleases
53-
req.context.enterpriseServerVersions = Object.keys(allVersions).filter((version) =>
54-
version.startsWith('enterprise-server@')
55-
)
59+
req.context.enterpriseServerVersions = enterpriseServerVersions
5660
req.context.redirects = redirects
5761
req.context.site = site[req.language].site
5862
req.context.siteTree = siteTree

0 commit comments

Comments
 (0)