Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for params in header key/values #10324

Merged
merged 9 commits into from
Apr 14, 2020
Merged

Conversation

ijjk
Copy link
Member

@ijjk ijjk commented Jan 29, 2020

This adds support for using params from the source in header key/values as discussed. It uses the current approach of using compile like normal until we decide how we want to handle patterns with compile here

@ijjk ijjk added this to the 9.2.x milestone Jan 29, 2020
@ijjk
Copy link
Member Author

ijjk commented Jan 29, 2020

Stats from current PR

Default Server Mode
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js add/headers-params Change
buildDuration 11.2s 11.1s -45ms
nodeModulesSize 52.1 MB 52.1 MB ⚠️ +833 B
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js add/headers-params Change
main-HASH.js gzip 5.1 kB 5.1 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..d6ae.js gzip 16.2 kB 16.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 69.9 kB 69.9 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary ijjk/next.js add/headers-params Change
main-HASH.module.js gzip 4.1 kB 4.1 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 15.1 kB 15.1 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 64.6 kB 64.6 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary ijjk/next.js add/headers-params Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary ijjk/next.js add/headers-params Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.68 kB
Client Pages Modern
zeit/next.js canary ijjk/next.js add/headers-params Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.22 kB
Client Build Manifests
zeit/next.js canary ijjk/next.js add/headers-params Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes
zeit/next.js canary ijjk/next.js add/headers-params Change
index.html gzip 1.02 kB 1.02 kB
link.html gzip 1.03 kB 1.03 kB
withRouter.html gzip 1.02 kB 1.02 kB
Overall change 3.07 kB 3.07 kB

Serverless Mode
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js add/headers-params Change
buildDuration 11.7s 11.7s ⚠️ +37ms
nodeModulesSize 52.1 MB 52.1 MB ⚠️ +833 B
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js add/headers-params Change
main-HASH.js gzip 5.1 kB 5.1 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..d6ae.js gzip 16.2 kB 16.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 69.9 kB 69.9 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary ijjk/next.js add/headers-params Change
main-HASH.module.js gzip 4.1 kB 4.1 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 15.1 kB 15.1 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 64.6 kB 64.6 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary ijjk/next.js add/headers-params Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary ijjk/next.js add/headers-params Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.68 kB
Client Pages Modern
zeit/next.js canary ijjk/next.js add/headers-params Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.22 kB
Client Build Manifests
zeit/next.js canary ijjk/next.js add/headers-params Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles
zeit/next.js canary ijjk/next.js add/headers-params Change
_error.js gzip 46.6 kB 46.6 kB
404.html gzip 1.42 kB 1.42 kB
hooks.html gzip 1.06 kB 1.06 kB
index.js gzip 46.8 kB 46.8 kB
link.js gzip 72.4 kB 72.4 kB
routerDirect.js gzip 70.4 kB 70.4 kB
withRouter.js gzip 70.5 kB 70.5 kB
Overall change 309 kB 309 kB

Commit: 02ba6e9

@ijjk
Copy link
Member Author

ijjk commented Mar 10, 2020

Stats from current PR

Default Server Mode
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js add/headers-params Change
buildDuration 9.1s 9.2s ⚠️ +99ms
nodeModulesSize 56.5 MB 56.5 MB ⚠️ +1.08 kB
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js add/headers-params Change
main-HASH.js gzip 5.77 kB 5.77 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..cfaa.js gzip 9.77 kB 9.77 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 55.4 kB 55.4 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary ijjk/next.js add/headers-params Change
main-HASH.module.js gzip 4.78 kB 4.78 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.71 kB 6.71 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.4 kB 51.4 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary ijjk/next.js add/headers-params Change
polyfills-HASH.js gzip 18.9 kB 18.9 kB
Overall change 18.9 kB 18.9 kB
Client Pages
zeit/next.js canary ijjk/next.js add/headers-params Change
_app.js gzip 1.09 kB 1.09 kB
_error.js gzip 2.96 kB 2.96 kB
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 1.89 kB 1.89 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.38 kB 7.38 kB
Client Pages Modern
zeit/next.js canary ijjk/next.js add/headers-params Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.06 kB 2.06 kB
hooks.module.js gzip 370 B 370 B
index.module.js gzip 212 B 212 B
link.module.js gzip 1.48 kB 1.48 kB
routerDirect..dule.js gzip 271 B 271 B
withRouter.m..dule.js gzip 270 B 270 B
Overall change 5.26 kB 5.26 kB
Client Build Manifests
zeit/next.js canary ijjk/next.js add/headers-params Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes
zeit/next.js canary ijjk/next.js add/headers-params Change
index.html gzip 916 B 916 B
link.html gzip 925 B 925 B
withRouter.html gzip 914 B 914 B
Overall change 2.75 kB 2.75 kB

Serverless Mode (Decrease detected ✓)
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js add/headers-params Change
buildDuration 9.7s 9.7s -62ms
nodeModulesSize 56.5 MB 56.5 MB ⚠️ +1.08 kB
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js add/headers-params Change
main-HASH.js gzip 5.77 kB 5.77 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..cfaa.js gzip 9.77 kB 9.77 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 55.4 kB 55.4 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary ijjk/next.js add/headers-params Change
main-HASH.module.js gzip 4.78 kB 4.78 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.71 kB 6.71 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.4 kB 51.4 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary ijjk/next.js add/headers-params Change
polyfills-HASH.js gzip 18.9 kB 18.9 kB
Overall change 18.9 kB 18.9 kB
Client Pages
zeit/next.js canary ijjk/next.js add/headers-params Change
_app.js gzip 1.09 kB 1.09 kB
_error.js gzip 2.96 kB 2.96 kB
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 1.89 kB 1.89 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.38 kB 7.38 kB
Client Pages Modern
zeit/next.js canary ijjk/next.js add/headers-params Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.06 kB 2.06 kB
hooks.module.js gzip 370 B 370 B
index.module.js gzip 212 B 212 B
link.module.js gzip 1.48 kB 1.48 kB
routerDirect..dule.js gzip 271 B 271 B
withRouter.m..dule.js gzip 270 B 270 B
Overall change 5.26 kB 5.26 kB
Client Build Manifests
zeit/next.js canary ijjk/next.js add/headers-params Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall decrease ✓
zeit/next.js canary ijjk/next.js add/headers-params Change
_error.js gzip 293 kB 293 kB ⚠️ +236 B
404.html gzip 1.32 kB 1.32 kB
hooks.html gzip 956 B 956 B
index.js gzip 294 kB 293 kB -739 B
link.js gzip 301 kB 301 kB ⚠️ +155 B
routerDirect.js gzip 300 kB 300 kB -111 B
withRouter.js gzip 300 kB 299 kB -192 B
Overall change 1.49 MB 1.49 MB -651 B

value: 'value=:path',
},
{
key: 'path-:path',
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the practical case for setting the header name to a dynamic value?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Depending on their set-up a user might want to return the original path as a header for rewrite/proxying scenarios. We mainly added this in @now/routing-utils for consistency so added this here to match that behavior

@ijjk ijjk requested a review from timneutkens April 14, 2020 16:21
Copy link
Member

@timneutkens timneutkens left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lgtm

@ijjk
Copy link
Member Author

ijjk commented Apr 14, 2020

Stats from current PR

Default Server Mode (Decrease detected ✓)
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js add/headers-params Change
buildDuration 10.3s 10.7s ⚠️ +373ms
nodeModulesSize 55.5 MB 55.5 MB ⚠️ +630 B
Page Load Tests Overall decrease ⚠️
zeit/next.js canary ijjk/next.js add/headers-params Change
/ failed reqs 0 0
/ total time (seconds) 2.058 2.171 ⚠️ +0.11
/ avg req/sec 1214.72 1151.54 -63.18
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.183 1.211 ⚠️ +0.03
/error-in-render avg req/sec 2113.73 2064.5 -49.23
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js add/headers-params Change
main-HASH.js gzip 6.25 kB 6.25 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..f272.js gzip 10.3 kB 10.3 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 56.4 kB 56.4 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary ijjk/next.js add/headers-params Change
main-HASH.module.js gzip 4.78 kB 4.78 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.84 kB 6.84 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.5 kB 51.5 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary ijjk/next.js add/headers-params Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
zeit/next.js canary ijjk/next.js add/headers-params Change
_app.js gzip 1.24 kB 1.24 kB
_error.js gzip 3.15 kB 3.15 kB
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 2.06 kB 2.06 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.88 kB 7.88 kB
Client Pages Modern
zeit/next.js canary ijjk/next.js add/headers-params Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.08 kB 2.08 kB
hooks.module.js gzip 370 B 370 B
index.module.js gzip 212 B 212 B
link.module.js gzip 1.51 kB 1.51 kB
routerDirect..dule.js gzip 271 B 271 B
withRouter.m..dule.js gzip 270 B 270 B
Overall change 5.3 kB 5.3 kB
Client Build Manifests
zeit/next.js canary ijjk/next.js add/headers-params Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes
zeit/next.js canary ijjk/next.js add/headers-params Change
index.html gzip 930 B 930 B
link.html gzip 937 B 937 B
withRouter.html gzip 924 B 924 B
Overall change 2.79 kB 2.79 kB

Serverless Mode
General Overall increase ⚠️
zeit/next.js canary ijjk/next.js add/headers-params Change
buildDuration 10.8s 10.5s -280ms
nodeModulesSize 55.5 MB 55.5 MB ⚠️ +630 B
Client Bundles (main, webpack, commons)
zeit/next.js canary ijjk/next.js add/headers-params Change
main-HASH.js gzip 6.25 kB 6.25 kB
webpack-HASH.js gzip 746 B 746 B
de003c3a9d30..f272.js gzip 10.3 kB 10.3 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 56.4 kB 56.4 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary ijjk/next.js add/headers-params Change
main-HASH.module.js gzip 4.78 kB 4.78 kB
webpack-HASH..dule.js gzip 746 B 746 B
de003c3a9d30..dule.js gzip 6.84 kB 6.84 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.5 kB 51.5 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary ijjk/next.js add/headers-params Change
polyfills-HASH.js gzip 26.3 kB 26.3 kB
Overall change 26.3 kB 26.3 kB
Client Pages
zeit/next.js canary ijjk/next.js add/headers-params Change
_app.js gzip 1.24 kB 1.24 kB
_error.js gzip 3.15 kB 3.15 kB
hooks.js gzip 664 B 664 B
index.js gzip 222 B 222 B
link.js gzip 2.06 kB 2.06 kB
routerDirect.js gzip 279 B 279 B
withRouter.js gzip 278 B 278 B
Overall change 7.88 kB 7.88 kB
Client Pages Modern
zeit/next.js canary ijjk/next.js add/headers-params Change
_app.module.js gzip 594 B 594 B
_error.module.js gzip 2.08 kB 2.08 kB
hooks.module.js gzip 370 B 370 B
index.module.js gzip 212 B 212 B
link.module.js gzip 1.51 kB 1.51 kB
routerDirect..dule.js gzip 271 B 271 B
withRouter.m..dule.js gzip 270 B 270 B
Overall change 5.3 kB 5.3 kB
Client Build Manifests
zeit/next.js canary ijjk/next.js add/headers-params Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles
zeit/next.js canary ijjk/next.js add/headers-params Change
_error.js 557 kB 557 kB
404.html 4.18 kB 4.18 kB
hooks.html 3.81 kB 3.81 kB
index.js 557 kB 557 kB
link.js 594 kB 594 kB
routerDirect.js 586 kB 586 kB
withRouter.js 586 kB 586 kB
Overall change 2.89 MB 2.89 MB

@ijjk ijjk merged commit ab18c79 into vercel:canary Apr 14, 2020
@ijjk ijjk deleted the add/headers-params branch April 14, 2020 16:47
@Timer Timer removed this from the 10.x.x milestone Nov 16, 2020
@vercel vercel locked as resolved and limited conversation to collaborators Jan 29, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants