performance
4
总安装量
4
周安装量
#54213
全站排名
安装命令
npx skills add https://github.com/dsantiagomj/dsmj-ai-toolkit --skill performance
Agent 安装分布
gemini-cli
4
github-copilot
4
codex
4
amp
4
kimi-cli
4
opencode
4
Skill 文档
Performance – Web Optimization
Build fast, responsive web experiences
When to Use This Skill
Use this skill when:
- Optimizing Core Web Vitals (LCP, INP, CLS)
- Implementing code splitting and lazy loading
- Optimizing images and assets
- Setting up caching strategies
- Monitoring performance metrics
Critical Patterns
Pattern 1: Optimize LCP
When: Improving largest contentful paint
Good:
<!-- Prioritize LCP image -->
<img
src="/hero.jpg"
fetchpriority="high"
loading="eager"
/>
<!-- Preload critical resources -->
<link rel="preload" href="/hero.jpg" as="image" />
// Next.js optimization
<Image
src="/hero.jpg"
width={1200}
height={600}
priority
/>
Target: < 2.5 seconds
Pattern 2: Reduce INP
When: Improving interaction responsiveness
Good:
// Break up long tasks
function processChunk(data, index = 0) {
if (index >= data.length) return;
processItem(data[index]);
setTimeout(() => processChunk(data, index + 1), 0);
}
// Debounce expensive operations
const handleSearch = debounce((query) => {
fetchResults(query);
}, 300);
Target: < 200ms
Pattern 3: Prevent CLS
When: Ensuring visual stability
Good:
<!-- Always specify dimensions -->
<img src="/image.jpg" width="800" height="600" />
<!-- Reserve space for dynamic content -->
<div style="min-height: 250px;">
<!-- Ad or dynamic content -->
</div>
// Show skeleton while loading
if (isLoading) {
return <div className="skeleton" style={{ height: '300px' }} />;
}
Target: < 0.1
Pattern 4: Code Splitting
When: Reducing initial bundle size
Good:
// Dynamic imports
const HeavyComponent = lazy(() => import('./HeavyComponent'));
function App() {
return (
<Suspense fallback={<div>Loading...</div>}>
{showChart && <HeavyComponent />}
</Suspense>
);
}
Why: Load code only when needed, reducing initial load time.
Pattern 5: Image Optimization
When: Optimizing images
Good:
<!-- Modern formats with fallbacks -->
<picture>
<source srcset="/image.avif" type="image/avif" />
<source srcset="/image.webp" type="image/webp" />
<img src="/image.jpg" alt="Description" />
</picture>
<!-- Lazy loading -->
<img src="/image.jpg" loading="lazy" width="800" height="600" />
Why: Modern formats are 30-50% smaller than JPEG.
Code Examples
Example 1: Code Splitting with Dynamic Imports
import { lazy, Suspense } from 'react';
// Lazy load heavy components
const ChartComponent = lazy(() => import('./ChartComponent'));
const AnalyticsDashboard = lazy(() => import('./AnalyticsDashboard'));
export default function Dashboard() {
const [showAnalytics, setShowAnalytics] = useState(false);
return (
<div>
<h1>Dashboard</h1>
<Suspense fallback={<div>Loading chart...</div>}>
<ChartComponent />
</Suspense>
<button onClick={() => setShowAnalytics(true)}>
Show Analytics
</button>
{showAnalytics && (
<Suspense fallback={<div>Loading analytics...</div>}>
<AnalyticsDashboard />
</Suspense>
)}
</div>
);
}
Example 2: Optimized Image Loading
import Image from 'next/image';
export function HeroSection() {
return (
<section>
{/* LCP image - prioritize loading */}
<Image
src="/hero-banner.jpg"
width={1200}
height={600}
priority
alt="Hero banner"
/>
{/* Below-the-fold images - lazy load */}
<div className="grid grid-cols-3 gap-4 mt-8">
{products.map(product => (
<Image
key={product.id}
src={product.image}
width={400}
height={300}
loading="lazy"
alt={product.name}
/>
))}
</div>
</section>
);
}
For comprehensive examples and detailed implementations, see the references/ folder.
Quick Checklist
Images:
- â Use WebP/AVIF with fallbacks
- â Lazy load below-the-fold images
- â Specify width and height
- â Set fetchpriority=”high” on LCP image
JavaScript:
- â Code split by route
- â Lazy load heavy components
- â Tree shake unused code
- â Defer non-critical scripts
Caching:
- â Set Cache-Control headers
- â Use CDN for static assets
- â Implement service worker
Progressive Disclosure
For detailed implementations:
- Core Web Vitals – LCP, INP, CLS optimization strategies
- Optimization Techniques – Code splitting, image optimization, caching
References
Maintained by dsmj-ai-toolkit