46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
|
|
"use client";
|
|||
|
|
|
|||
|
|
import { useEffect } from 'react';
|
|||
|
|
|
|||
|
|
// 预加载关键资源
|
|||
|
|
const criticalResources = [
|
|||
|
|
// 导航图标
|
|||
|
|
'/icons/navigation/icon-lending.svg',
|
|||
|
|
'/icons/navigation/icon-alp.svg',
|
|||
|
|
'/icons/navigation/icon-swap.svg',
|
|||
|
|
'/icons/navigation/icon-transparency.svg',
|
|||
|
|
'/icons/navigation/icon-points.svg',
|
|||
|
|
|
|||
|
|
// 常用操作图标
|
|||
|
|
'/icons/actions/icon-wallet.svg',
|
|||
|
|
'/icons/actions/icon-notification.svg',
|
|||
|
|
'/icons/actions/icon-copy.svg',
|
|||
|
|
|
|||
|
|
// Logo
|
|||
|
|
'/logos/logo.svg',
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
export default function ResourcePreload() {
|
|||
|
|
useEffect(() => {
|
|||
|
|
// 使用浏览器原生预加载API
|
|||
|
|
criticalResources.forEach(url => {
|
|||
|
|
const link = document.createElement('link');
|
|||
|
|
link.rel = 'prefetch';
|
|||
|
|
link.as = 'image';
|
|||
|
|
link.href = url;
|
|||
|
|
document.head.appendChild(link);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
// 可选:使用fetch预加载并缓存
|
|||
|
|
if ('caches' in window) {
|
|||
|
|
caches.open('svg-cache-v1').then(cache => {
|
|||
|
|
cache.addAll(criticalResources).catch(err => {
|
|||
|
|
console.error('预加载SVG失败:', err);
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}, []);
|
|||
|
|
|
|||
|
|
return null;
|
|||
|
|
}
|