preactjs / preact-cli

😺 Your next Preact PWA starts in 30 seconds.
MIT License
4.68k stars 377 forks source link

Pre rendering very slow and memory expensive #1463

Open Debdut opened 3 years ago

Debdut commented 3 years ago

Reproduction

Please try building this repo

Steps to reproduce

I am building with pre-render about 1000 pages.

preact build --prerenderUrls ./prerender.js

Expected Behavior

I expect 1K pages rendering to take significantly less time and less memory.

Actual Behavior

When I try to build on a 2GB memory container, it fails with Out of Memory Error (Exit Status 137). It takes about 1 hr on 4GB machine with 4 vCPUs to build.

As it seems from the building process, preact build all of the files in memory first and then emits them, instead of emitting one by one and clearing the memory in process. This probably leads to such high memory usage.

On similar pre-rendering frameworks like react-static and Gatsby it takes about 5 min each for the same job.

I love Preact but it seems I won't be able to scale the pre-rendering for my site with it.

prateekbh commented 3 years ago

opened an rfc https://github.com/preactjs/preact-cli/issues/1482 regarding this

LionsAd commented 2 years ago

Unfortunately the experimental renderer never did make it in, but if someone still needs fast prerender.js script:

https://github.com/preactjs/preact-cli/issues/1684#issuecomment-1094349753