preconnect를 사용하면 리소스를 로드할 것으로 예상되는 서버에 미리 연결할 수 있어요.
preconnect("https://example.com");
preconnect는 브라우저에게 "이 서버에서 곧 데이터를 가져올 거니까 미리 연결해둬"라고 알려주는 기능이에요. DNS 조회, TCP 핸드셰이크, TLS 협상 등을 미리 해두면 실제 리소스를 요청할 때 더 빨라져요!
preconnect(href)호스트에 미리 연결하려면, react-dom에서 preconnect 함수를 호출하세요.
import { preconnect } from 'react-dom';
function AppRoot() {
preconnect("https://example.com");
// ...
}
preconnect 함수는 브라우저에게 주어진 서버에 대한 연결을 열어야 한다는 힌트를 제공해요. 브라우저가 그렇게 하기로 선택하면, 해당 서버에서 리소스를 로드하는 속도를 높일 수 있어요.
href: 문자열이에요. 연결하고 싶은 서버의 URL이에요.preconnect는 아무것도 반환하지 않아요.
preconnect를 여러 번 호출하는 것은 한 번 호출하는 것과 같은 효과를 가져요.preconnect를 호출할 수 있어요: 컴포넌트를 렌더링하는 동안, Effect 안에서, 이벤트 핸들러 안에서 등등.preconnect는 컴포넌트를 렌더링하는 동안 또는 컴포넌트 렌더링에서 시작된 비동기 context에서 호출할 때만 효과가 있어요. 다른 모든 호출은 무시될 거예요.자식들이 해당 호스트에서 외부 리소스를 로드할 것을 알고 있다면, 컴포넌트를 렌더링할 때 preconnect를 호출하세요.
import { preconnect } from 'react-dom';
function AppRoot() {
preconnect("https://example.com");
return ...;
}
위 예시에서:
AppRoot 컴포넌트가 렌더링되면서 https://example.com에 미리 연결해요실제 활용 예시:
import { preconnect } from 'react-dom';
function UserProfile() {
// 사용자 아바타 이미지가 CDN에서 로드될 것을 알고 있으니 미리 연결
preconnect("https://cdn.example.com");
return (
<div>
<img src="https://cdn.example.com/avatar.jpg" alt="User avatar" />
{/* ... */}
</div>
);
}
외부 리소스가 필요한 페이지나 state로 전환하기 전에 이벤트 핸들러에서 preconnect를 호출하세요. 새 페이지나 state를 렌더링하는 동안 호출하는 것보다 더 일찍 프로세스를 시작할 수 있어요.
import { preconnect } from 'react-dom';
function CallToAction() {
const onClick = () => {
preconnect('http://example.com');
startWizard();
}
return (
<button onClick={onClick}>Start Wizard</button>
);
}
위 예시에서:
startWizard()를 실행하기 전에 http://example.com에 미리 연결해요실제 활용 예시:
import { preconnect } from 'react-dom';
function ProductCard({ product }) {
const handleViewDetails = () => {
// 상세 페이지로 가기 전에 API 서버에 미리 연결
preconnect('https://api.example.com');
// 상세 페이지로 이동
navigate(`/product/${product.id}`);
};
return (
<div>
<h3>{product.name}</h3>
<button onClick={handleViewDetails}>View Details</button>
</div>
);
}
이렇게 하면 사용자가 "View Details" 버튼을 클릭하는 순간 API 서버에 연결을 시작해서, 상세 페이지가 로드될 때 더 빠르게 데이터를 가져올 수 있어요!
preconnect는 다음과 같은 경우에 특히 유용해요:
주의할 점: