atomicdata-dev / atomic-server

An open source headless CMS / real-time database. Powerful table editor, full-text search, and SDKs for JS / React / Svelte.
https://atomicserver.eu
MIT License
1.01k stars 46 forks source link

Improve initial page load times #511

Open joepio opened 2 years ago

joepio commented 2 years ago

Although Atomic-Server feels pretty fast most of the time, the initial load has room for improvement. This is partially due to the amount of round trips:

  1. Fetch the HTML, parse and render loading screen
  2. Fetch the JS assets, parse and execute
  3. Fetch various JSON-AD resources (including the requested page), parse and render

Include in first HTML

We could improve this by sending more data in the first HTML request:

Downsides of including things in the HTML:

Include script to fetch in first HTML

In the first HTML response, include a script that fetches the JSON-AD for the requested resource + properties + classes. Parse the JSON, put it on window.atomic or something, and then when the JS is parsed, add the parsed files.

joepio commented 1 year ago

Properly escaping the JSON is important! A lot of bad advice can be found on the web on how to properly add JSON to your HTML. It's very easy to open up a chance for hackers to run some arbitrary code.

Screenshot 2023-02-04 at 14 43 15

Perhaps we should convert to base64 or something.