You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Note: in our content plugins, we created the JSON module only to read it later from the MDX loader:
// blogawaitcreateData(// Note that this created data path must be in sync with// metadataPath provided to mdx-loader.`${docuHash(metadata.source)}.json`,metadata,);// docsawaitactions.createData(// Note that this created data path must be in sync with// metadataPath provided to mdx-loader.`${docuHash(doc.source)}.json`,doc,);
This was quite useless since we already had that data in memory. This has been changed in #10457 by reading from memory instead of JSON.
After this optimization, a question remained: What's the purpose of this JSON bundle? Now it has a purpose: it will be imported/re-exported by the MDX loader.
This has benefits for the blog because the same blog post is being rendered in 2 variants: full and truncated. Now instead of duplicating blog metadata in both versions, the bundler will not duplicate and the 2 variants can share the same metadata module.
Impact
This doesn't have a significant impact on bundle time, despite partially reverting #10457. Now Webpack will read a JSON file from the filesystem instead of from memory, but for blog posts it will only include it once and reduce emitted JS size.
But it does have an impact on the JS size of a site since blog metadata are not duplicated anymore:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ArgosAdd this label to run UI visual regression tests. See argos.yml GH action.CLA SignedSigned Facebook CLApr: performanceThis PR does not add a new behavior, but existing behaviors will be more memory- / time-efficient.
2 participants
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
In MDX loader, we previously serialized metadata:
Now we do import and re-export the existing module:
Note: in our content plugins, we created the JSON module only to read it later from the MDX loader:
This was quite useless since we already had that data in memory. This has been changed in #10457 by reading from memory instead of JSON.
After this optimization, a question remained: What's the purpose of this JSON bundle? Now it has a purpose: it will be imported/re-exported by the MDX loader.
This has benefits for the blog because the same blog post is being rendered in 2 variants: full and truncated. Now instead of duplicating blog metadata in both versions, the bundler will not duplicate and the 2 variants can share the same metadata module.
Impact
This doesn't have a significant impact on bundle time, despite partially reverting #10457. Now Webpack will read a JSON file from the filesystem instead of from memory, but for blog posts it will only include it once and reduce emitted JS size.
But it does have an impact on the JS size of a site since blog metadata are not duplicated anymore:
BEFORE
AFTER:
Test Plan
CI
Test links
https://deploy-preview-10470--docusaurus-2.netlify.app/