Bird
Raised Fist0
Astroframework~8 mins

Prefetching and preloading in Astro - Performance & Optimization

Choose your learning style10 modes available
Performance: Prefetching and preloading
MEDIUM IMPACT
Prefetching and preloading improve page load speed by loading resources early, reducing wait time for users.
Loading important CSS and scripts for initial page render
Astro
<link rel="preload" href="styles.css" as="style" onload="this.rel='stylesheet'">
<link rel="preload" href="app.js" as="script">
Browser starts fetching critical resources early, allowing faster rendering of main content.
📈 Performance GainReduces LCP by 100-300ms by loading key assets sooner
Loading important CSS and scripts for initial page render
Astro
<link rel="stylesheet" href="styles.css">
<script src="app.js"></script>
Resources load only when HTML parser reaches these tags, delaying critical content rendering.
📉 Performance CostBlocks rendering until resources load, increasing LCP by 200-400ms on slow networks
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
No preload or prefetchMinimalMultiple reflows due to late resource arrivalHigh paint cost due to delayed styles/scripts[X] Bad
Preload critical resourcesMinimalSingle reflow after early resource fetchLower paint cost with faster style application[OK] Good
Prefetch non-critical resourcesMinimalNo reflows triggeredNo paint cost impact on current page[OK] Good
Preload non-critical resourcesMinimalBlocks rendering causing reflowsIncreased paint cost delaying LCP[X] Bad
Rendering Pipeline
Preloading inserts resource fetches early in the critical rendering path, speeding up Style Calculation and Layout. Prefetching loads resources after main content, avoiding blocking.
→Resource Fetching
→Style Calculation
→Layout
→Paint
⚠️ BottleneckResource Fetching delays critical rendering if not preloaded properly
Core Web Vital Affected
LCP
Prefetching and preloading improve page load speed by loading resources early, reducing wait time for users.
Optimization Tips
1Use preload only for resources critical to initial rendering.
2Use prefetch for resources needed in future navigations or interactions.
3Avoid preloading non-critical resources to prevent render blocking.
Performance Quiz - 3 Questions
Test your performance knowledge
Which resource hint should you use to load critical CSS needed for initial page render?
APreload
BPrefetch
CPreconnect
DDNS-Prefetch
DevTools: Performance
How to check: Record page load, look for resource fetch timing and blocking in the waterfall; check if critical resources start loading early.
What to look for: Early fetch start times for preloaded resources and low blocking time; prefetch resources load after main content.

Practice

(1/5)
1. What is the main purpose of prefetching in Astro?
easy
A. To remove unused resources from the page
B. To load resources immediately for current use
C. To load resources in the background before they are needed
D. To delay loading resources until user interaction

Solution

  1. Step 1: Understand prefetching concept

    Prefetching means loading resources quietly in the background before the user needs them.
  2. Step 2: Compare with other options

    Preloading loads immediately, delaying is opposite, and removing resources is unrelated.
  3. Final Answer:

    To load resources in the background before they are needed -> Option C
  4. Quick Check:

    Prefetching = background loading [OK]
Hint: Prefetching = load early but quietly in background [OK]
Common Mistakes:
  • Confusing prefetching with preloading
  • Thinking prefetching delays loading
  • Assuming prefetching removes resources
2. Which is the correct way to add a prefetch link in Astro's <head>?
easy
A.
B.
C.
D.

Solution

  1. Step 1: Identify correct rel attribute for prefetch

    Prefetch uses rel="prefetch" to hint browser to load resource in background.
  2. Step 2: Check other options

    Preload uses rel="preload", but question asks for prefetch. rel="fetch" is invalid.
  3. Final Answer:

    <link rel="prefetch" href="/script.js"> -> Option D
  4. Quick Check:

    Prefetch link uses rel="prefetch" [OK]
Hint: Prefetch link uses rel="prefetch" exactly [OK]
Common Mistakes:
  • Using preload instead of prefetch
  • Missing the rel attribute
  • Using invalid rel values like fetch
3. Given this Astro component snippet, what will happen?
<head>
  <link rel="preload" as="style" href="/styles.css" />
</head>
<body>
  <h1>Hello</h1>
</body>
medium
A. The styles.css file loads immediately to style the page quickly
B. The styles.css file loads in the background after page load
C. The styles.css file is ignored by the browser
D. The styles.css file loads only when user scrolls

Solution

  1. Step 1: Understand preload with as="style"

    Preload with as="style" tells browser to load CSS immediately for fast styling.
  2. Step 2: Compare with prefetch behavior

    Prefetch loads in background, but preload loads right away to speed up rendering.
  3. Final Answer:

    The styles.css file loads immediately to style the page quickly -> Option A
  4. Quick Check:

    Preload with as="style" = immediate CSS load [OK]
Hint: Preload with as="style" loads CSS immediately [OK]
Common Mistakes:
  • Confusing preload with prefetch
  • Thinking preload delays loading
  • Ignoring the as attribute importance
4. Identify the error in this Astro prefetch usage:
<head>
  <link rel="prefetch" as="script" href="/app.js" />
</head>
medium
A. Prefetch should not use the 'as' attribute
B. The href attribute is missing
C. rel="prefetch" is invalid in Astro
D. The link tag must be inside the body

Solution

  1. Step 1: Check prefetch attribute usage

    Prefetch links should not include the as attribute; it's only for preload.
  2. Step 2: Validate other attributes and placement

    The href is present, rel="prefetch" is valid, and link tags belong in head, not body.
  3. Final Answer:

    Prefetch should not use the 'as' attribute -> Option A
  4. Quick Check:

    Prefetch without 'as' attribute [OK]
Hint: Prefetch links never use 'as' attribute [OK]
Common Mistakes:
  • Adding 'as' attribute to prefetch
  • Placing link tags inside body
  • Confusing prefetch with preload
5. You want to optimize loading a large image that will be shown on the next page in Astro. Which combination is best?
hard
A. Use <link rel="preload" as="image" href="/large.jpg" /> on current page
B. Use <link rel="prefetch" href="/large.jpg" /> on current page and preload on next page
C. Use <link rel="prefetch" href="/large.jpg" as="image" /> on current page
D. Do not preload or prefetch; load image only when user clicks

Solution

  1. Step 1: Understand prefetch for next page resources

    Prefetch loads resources in background for future use, ideal for next page images.
  2. Step 2: Combine with preload on next page

    Preloading on next page ensures immediate display when user arrives, improving UX.
  3. Step 3: Check invalid options

    Preload on current page wastes bandwidth if image not shown now; 'as' attribute invalid with prefetch; delaying load hurts UX.
  4. Final Answer:

    Use <link rel="prefetch" href="/large.jpg" /> on current page and preload on next page -> Option B
  5. Quick Check:

    Prefetch now + preload later = best for next page image [OK]
Hint: Prefetch for next page, preload on arrival for speed [OK]
Common Mistakes:
  • Preloading large images too early wasting bandwidth
  • Adding 'as' attribute to prefetch links
  • Not prefetching resources needed soon
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