-
Notifications
You must be signed in to change notification settings - Fork 10.3k
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
Allow to create a script tag with src attribute for chunk manifest file #2992
Comments
Since the webpack manifest is loaded only once per session and is on the critical path for getting to interactive (better to inline things on critical path as we need them ASAP), we don't want to defer loading the script. We do want however to move the inlining after the body as the manifest isn't on the critical path for the initial paint so putting it in the head is slowing down the initial paint some. Lemme know if you want to work on that! |
@KyleAMathews But wouldn't that mean that:
I'm not asking for it to be the default behavior, just an option that might be useful in cases where there are so many pages. Could it be reconsidered once the inlined manifest is moved to the end or or after the |
|
Hopefully you won't be building 5k page sites before then :-P |
Thanks @KyleAMathews for you support, that is awesome news! |
@barraq np! Yeah the goal has always been to make Gatsby work for any sized site e.g. 10s of millions of pages even — actually, really want to rebuild Wikipedia on Gatsby someday haha :-) But yeah, had to ship something first and then go from there but there's straightforward ways to remove all the current scaling problems. |
Will be putting together a new roadmap for this stuff in coming weeks. |
Currently the chunk manifest is always inlined into generated html files. It's ok if there are not that many pages/chunks, but in my prototype with ~500 pages the uncompressed
chunk-manifest.json
file has already size of ~30kB (12kB gzipped) and I can assume that with ~5000 pages that we got in total, it will be ~10x larger.That's why it might be a good idea to add an option to generate a
chunk-manifest.js
file and a script tag with src attribute pointing to it.So far I came up with something like this:
This generates
chunk-manifest.js
file based on contents ofchunk-manifest.json
file:This decides if it should create script tag with inlined contents of
chunk-manifest.json
file or with src attribute pointing tochunk-manifest.js
file:It's just an initial version, which probably has some issues, e.g.
require(!file...)
will probably emitchunk-manifest.[hash].js
as many times as there are pages (though maybe node caching mechanism kicks in here forrequire
calls and it will do it just once),pathPrefix
is not taken into account (though it should be an easy fix) etc.Please let me know if it's something you'd be interested in and what's the best way to specify an option to decide if chunk manifest should be inlined or not and I'll prepare a PR.
The text was updated successfully, but these errors were encountered: