fb79a15508
- 添加 sections 定义文件,包含性能优化各领域分类 - 添加规则模板文件,规范文档结构和标签定义 - 添加异步操作优化规则,包括防止瀑布流、并行化、延迟等待等 - 添加包大小优化规则,包括避免桶式导入、动态导入、预加载等 - 添加服务端性能优化规则,包括 API 路
2.5 KiB
2.5 KiB
title, impact, impactDescription, tags
| title | impact | impactDescription | tags |
|---|---|---|---|
| Use React DOM Resource Hints | HIGH | reduces load time for critical resources | rendering, preload, preconnect, prefetch, resource-hints |
Use React DOM Resource Hints
Impact: HIGH (reduces load time for critical resources)
React DOM provides APIs to hint the browser about resources it will need. These are especially useful in server components to start loading resources before the client even receives the HTML.
prefetchDNS(href): Resolve DNS for a domain you expect to connect topreconnect(href): Establish connection (DNS + TCP + TLS) to a serverpreload(href, options): Fetch a resource (stylesheet, font, script, image) you'll use soonpreloadModule(href): Fetch an ES module you'll use soonpreinit(href, options): Fetch and evaluate a stylesheet or scriptpreinitModule(href): Fetch and evaluate an ES module
Example (preconnect to third-party APIs):
import { preconnect, prefetchDNS } from 'react-dom'
export default function App() {
prefetchDNS('https://analytics.example.com')
preconnect('https://api.example.com')
return <main>{/* content */}</main>
}
Example (preload critical fonts and styles):
import { preload, preinit } from 'react-dom'
export default function RootLayout({ children }) {
// Preload font file
preload('/fonts/inter.woff2', { as: 'font', type: 'font/woff2', crossOrigin: 'anonymous' })
// Fetch and apply critical stylesheet immediately
preinit('/styles/critical.css', { as: 'style' })
return (
<html>
<body>{children}</body>
</html>
)
}
Example (preload modules for code-split routes):
import { preloadModule, preinitModule } from 'react-dom'
function Navigation() {
const preloadDashboard = () => {
preloadModule('/dashboard.js', { as: 'script' })
}
return (
<nav>
<a href="/dashboard" onMouseEnter={preloadDashboard}>
Dashboard
</a>
</nav>
)
}
When to use each:
| API | Use case |
|---|---|
prefetchDNS |
Third-party domains you'll connect to later |
preconnect |
APIs or CDNs you'll fetch from immediately |
preload |
Critical resources needed for current page |
preloadModule |
JS modules for likely next navigation |
preinit |
Stylesheets/scripts that must execute early |
preinitModule |
ES modules that must execute early |
Reference: React DOM Resource Preloading APIs