Bird
Raised Fist0
Astroframework~8 mins

Creating pages in Astro - Performance Optimization Steps

Choose your learning style10 modes available
Performance: Creating pages
HIGH IMPACT
This affects the initial page load speed and how quickly the main content appears to the user.
Building a website page with Astro
Astro
---
export async function getStaticPaths() {
  const paths = await fetch('https://api.example.com/all-ids').then(res => res.json());
  return paths.map(id => ({ params: { id } }));
}

const { params } = Astro;
const data = await fetch('https://api.example.com/data/' + params.id).then(res => res.json());
---

<html>
  <body>
    <h1>{data.title}</h1>
  </body>
</html>
Pages are pre-built at build time, so the server serves static HTML instantly without waiting for API calls.
📈 Performance GainReduces server response time to near zero; improves LCP by serving ready HTML.
Building a website page with Astro
Astro
---
// No static paths defined, prerender=false enables server rendering on each request
export const prerender = false;

const { params } = Astro;
const data = await fetch('https://api.example.com/data/' + params.id).then(res => res.json());
---

<html>
  <body>
    <h1>{data.title}</h1>
  </body>
</html>
Page is rendered on each request (SSR), causing slower response and delayed content display.
📉 Performance CostBlocks rendering for 200-500ms per request depending on API speed; increases server CPU load.
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Server-side rendering on each requestModerate (depends on data)Multiple reflows due to delayed contentHigh paint cost due to late HTML arrival[X] Bad
Static generation at build timeMinimal and fixedSingle reflow on initial paintLow paint cost with instant HTML[OK] Good
Rendering Pipeline
Astro pre-builds pages into static HTML during build time, so the browser receives fully formed HTML, skipping server rendering delays.
→Server Rendering
→Network Transfer
→Browser Parsing
→Paint
⚠️ BottleneckServer Rendering when pages are generated on demand
Core Web Vital Affected
LCP
This affects the initial page load speed and how quickly the main content appears to the user.
Optimization Tips
1Pre-build pages at build time to serve static HTML and reduce server delays.
2Avoid server-side rendering on each request to improve Largest Contentful Paint (LCP).
3Use getStaticPaths() to generate pages statically in Astro.
Performance Quiz - 3 Questions
Test your performance knowledge
What is the main performance benefit of creating pages statically in Astro?
APages have more interactive JavaScript by default
BPages load faster because HTML is pre-built and served instantly
CPages use less CSS
DPages avoid using any images
DevTools: Performance
How to check: Record a page load in DevTools Performance panel and look at the 'Time to First Byte' and 'Largest Contentful Paint' timings.
What to look for: Short TTFB and early LCP indicate static pages; long TTFB and delayed LCP indicate server-side rendering delays.

Practice

(1/5)
1. What happens when you create a new .astro file inside the src/pages folder in an Astro project?
easy
A. You must register the page in a routing file for it to work.
B. The file is ignored unless you import it manually in another file.
C. A new webpage is automatically created with a URL matching the file name.
D. It creates a new component but not a page.

Solution

  1. Step 1: Understand Astro's file-based routing

    Astro automatically creates routes from files in src/pages. Each .astro file becomes a page.
  2. Step 2: Connect file name to URL

    The file name directly maps to the URL path, so creating a file adds a new page accessible by that URL.
  3. Final Answer:

    A new webpage is automatically created with a URL matching the file name. -> Option C
  4. Quick Check:

    File in src/pages = new page URL [OK]
Hint: Remember: pages folder files become URLs automatically [OK]
Common Mistakes:
  • Thinking you must import page files manually
  • Confusing components with pages
  • Believing a routing config is needed
2. Which of the following is the correct way to create a homepage in Astro?
easy
A. Create a file named default.astro inside src/pages/home.
B. Create a file named home.astro inside src/pages.
C. Create a file named main.astro inside src/components.
D. Create a file named index.astro inside src/pages.

Solution

  1. Step 1: Identify homepage naming convention

    In Astro, the homepage URL is /, which maps to index.astro in src/pages.
  2. Step 2: Check folder and file placement

    The file must be directly inside src/pages and named index.astro to serve as homepage.
  3. Final Answer:

    Create a file named index.astro inside src/pages. -> Option D
  4. Quick Check:

    Homepage = src/pages/index.astro [OK]
Hint: Homepage file is always index.astro in pages folder [OK]
Common Mistakes:
  • Naming homepage file anything other than index.astro
  • Placing homepage file in components folder
  • Using nested folders incorrectly for homepage
3. Given this file src/pages/about.astro with content:
<!-- src/pages/about.astro -->
<h1>About Us</h1>
<p>Welcome to our site.</p>

What URL will display this page when running the Astro dev server?
medium
A. http://localhost:3000/about
B. http://localhost:3000/about.astro
C. http://localhost:3000/about-us
D. http://localhost:3000/pages/about

Solution

  1. Step 1: Map file path to URL

    The file about.astro inside src/pages maps to the URL path /about.
  2. Step 2: Understand URL structure

    Astro removes the file extension and folder prefix src/pages from the URL, so the URL is /about.
  3. Final Answer:

    http://localhost:3000/about -> Option A
  4. Quick Check:

    File name = URL path [OK]
Hint: File name without extension = URL path [OK]
Common Mistakes:
  • Including .astro extension in URL
  • Adding 'pages' folder name to URL
  • Guessing URL from page content
4. You created a file src/pages/contact.astro but visiting /contact shows a 404 error. What is the most likely cause?
medium
A. You forgot to restart the Astro dev server after adding the file.
B. The file is placed inside src/components instead of src/pages.
C. The file has a syntax error preventing Astro from loading it.
D. Astro requires a routing config to recognize new pages.

Solution

  1. Step 1: Verify file placement

    The most likely cause is that the file is actually inside src/components instead of src/pages. Components folder files do not create routes.
  2. Step 2: Syntax errors cause error pages, not 404

    Syntax errors show an error screen when visiting the route, not a 404 Page Not Found.
  3. Step 3: Dev server auto-reloads

    Astro detects new pages automatically, restart rarely needed.
  4. Final Answer:

    The file is placed inside src/components instead of src/pages. -> Option B
  5. Quick Check:

    404 on new page = check pages vs components folder [OK]
Hint: New page 404s? Double-check src/pages vs components folder [OK]
Common Mistakes:
  • Assuming routing config is needed
  • Not checking file syntax
  • Misplacing file in components folder
5. You want to create a nested page at URL /blog/post1. Which file structure and naming is correct in Astro?
hard
A. Create src/pages/blog/post1.astro file.
B. Create src/pages/blog-post1.astro file.
C. Create src/pages/blog/post1/index.html file.
D. Create src/pages/blog/post1.astro and add a routing config.

Solution

  1. Step 1: Understand nested routing in Astro

    Folders inside src/pages create nested URL paths automatically.
  2. Step 2: Map file to nested URL

    Placing post1.astro inside src/pages/blog creates URL /blog/post1.
  3. Step 3: Check alternatives

    Create src/pages/blog-post1.astro file creates flat URL /blog-post1. Create src/pages/blog/post1/index.html file creates no route (.html not supported as pages). Create src/pages/blog/post1.astro and add a routing config is incorrect because Astro does not require routing config.
  4. Final Answer:

    Create src/pages/blog/post1.astro file. -> Option A
  5. Quick Check:

    Nested folder + file = nested URL [OK]
Hint: Nested folders in pages map to nested URLs directly [OK]
Common Mistakes:
  • Using hyphens instead of folders for nesting
  • Adding unnecessary routing config
  • Confusing index.astro usage for nested pages
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard