-
-
Notifications
You must be signed in to change notification settings - Fork 744
Markdown page navigation slow on dev server when having multiple thousand md pages #2674
Description
Is your feature request related to a problem? Please describe
When having a few thousand markdown pages (2,000+), navigating between markdown pages when running the dev server can take seconds to load the new page.
(I observed multiple seconds on an Intel MacBook Pro and 1~2 seconds on a M1 Pro MacBook Pro per page transition.)
This problem explicitly occurs on the local dev server, for markdown pages only, and only when having 2,000+ markdown pages, making local development quite frustrating.
Build times are fine though and navigating on the SSR generated site is snappy.
Describe the solution you'd like
The problem seems to be caused by not using the content cache on localhost.
content/src/runtime/server/storage.ts
Lines 147 to 149 in 3a2b5d1
| if (isPrerendering && cachedContents.length) { | |
| return cachedContents | |
| } |
I assume not using the cache keeps hot reload working when files are changed, however this seems to cause the severe degradation in performance when dealing with lots of markdown pages.
To fix the issue I suggest using the cache on localhost as well, and flushing the cache when a file change is detected, to keep hot reload working.
I will create a PR (draft) later to address this.
Describe alternatives you've considered
N/A
Additional context
Video showing the issue:
Screen.Recording.2024-06-21.at.18.34.56.mov
On the video loading times are still < 1s, however the situation gets worse for more complex markdown pages.
Video showing the fix I'm working on:
Screen.Recording.2024-06-21.at.18.40.47.mov
Reproduction
I've created a project on StackBlitz to reproduce the issue.
https://stackblitz.com/~/github.com/coffeephile/nuxt-huge-project-test
- Make sure to check out branch
nuxt-content-performance-patch - Install packages
npm i - Run
NUXT_NUM_PAGES=10000 npm run dev(generate 10,000 markdown pages) - Open preview in new tab (or better: run locally on your machine)
To apply the fix:
- Run
chmod +x patch-content-localhost.sh - Run
./patch-content-localhost.sh - Run
NUXT_NUM_PAGES=10000 npm run dev - Open preview in new tab (or better: run locally on your machine)