9148c358d0
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를 Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류. - 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로 자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거, 동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거. - 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming, Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business, Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로, 나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는 title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백). 원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지. - 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서. - 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는 지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지. - Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경. - 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
4.9 KiB
4.9 KiB
id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
| id | title | category | status | canonical_id | aliases | duplicate_of | source_trust_level | confidence_score | verification_status | tags | raw_sources | last_reinforced | github_commit | tech_stack | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| wiki-2026-0508-콘텐츠-기반의-이커머스-및-뉴스-웹사이트-성능-튜닝 | 콘텐츠 기반의 이커머스 및 뉴스 웹사이트 성능 튜닝 | 10_Wiki/Topics | verified | self |
|
none | A | 0.9 | applied |
|
2026-05-10 | pending |
|
콘텐츠 기반의 이커머스 및 뉴스 웹사이트 성능 튜닝
매 한 줄
"매 이커머스 와 뉴스 는 매 LCP 와 매 traffic spike 가 매 매출 / engagement 에 매 직결". 매 1 초 LCP 개선 = Amazon $1B/yr (고전), Pinterest +15% conversion. 매 2026 stack — Next.js 15 + ISR + Edge / CDN + Image optim — 가 매 default playbook.
매 핵심
매 두 도메인 의 차이
- 이커머스: 매 product page 의 매 LCP (image), 매 PDP 의 매 INP (variant select), 매 cart 의 매 freshness.
- 뉴스: 매 article 의 매 LCP (cover image / headline), 매 publishing speed (ISR ≤ 60s), 매 ad / tracker 부하.
매 핵심 lever
- ISR (Incremental Static Regeneration): build-time SSG + runtime revalidate.
- Edge caching: Vercel / Cloudflare / Fastly 의 매 stale-while-revalidate.
- Image CDN: Cloudinary / imgix / Next Image — 매 AVIF + responsive.
- Streaming SSR: RSC + Suspense → 매 TTFB 개선.
- Third-party tax 최소화: GTM / pixel — 매 Partytown 또는 server-side tracking.
매 응용
- Shopify Hydrogen / Next Commerce.
- NYT, WaPo, Bloomberg 식 article.
- Medium / Substack 식 long-tail.
💻 패턴
ISR (Next 15)
// app/products/[id]/page.tsx
export const revalidate = 60; // 매 60초 ISR
export default async function Product({ params }) {
const product = await getProduct(params.id);
return <ProductView product={product} />;
}
export async function generateStaticParams() {
const top = await getTopProducts(1000); // 매 top 1000 prebuild
return top.map(p => ({ id: p.id }));
}
On-demand revalidation
// app/api/revalidate/route.ts
import { revalidatePath } from "next/cache";
export async function POST(req: Request) {
const { path, secret } = await req.json();
if (secret !== process.env.REVALIDATE_SECRET) return new Response("nope", { status: 401 });
revalidatePath(path);
return Response.json({ revalidated: true });
}
Streaming SSR (RSC + Suspense)
export default function ArticlePage({ params }) {
return (
<>
<ArticleHeader id={params.id} /> {/* 매 즉시 stream */}
<Suspense fallback={<CommentsSkeleton />}>
<Comments id={params.id} /> {/* 매 below-fold */}
</Suspense>
</>
);
}
Edge runtime (latency 최소)
export const runtime = "edge";
export default async function Page() {
const data = await fetch("https://api...", { next: { revalidate: 30 } });
return <View data={await data.json()} />;
}
Image responsive + priority
<Image
src={product.cover}
alt={product.name}
width={800} height={600}
sizes="(max-width: 768px) 100vw, 50vw"
priority={isAboveFold}
quality={80}
/>
Partytown (3rd-party off main thread)
import Script from "next/script";
<Script src="https://www.googletagmanager.com/gtm.js?id=GTM-XXX"
strategy="worker" />
Cache header (CDN-friendly)
return new Response(html, {
headers: {
"Cache-Control": "public, s-maxage=60, stale-while-revalidate=600",
},
});
매 결정 기준
| 페이지 타입 | 전략 |
|---|---|
| Product Detail (top seller) | SSG + ISR(60s) + Edge |
| Product Detail (long tail) | SSR streaming |
| Cart / Checkout | SSR (no cache, fresh) |
| News article | SSG + ISR(30s) + on-demand |
| Live ticker | RSC + WebSocket |
기본값: Next 15 App Router + ISR + Edge runtime + Next/Image + Partytown.
🔗 Graph
- 부모: Web Performance · Large_Frontend_Projects
- 변형: ISR · Edge Computing · Streaming SSR
- 응용: Headless Commerce
- Adjacent: CDN · Core Web Vitals Optimization (INP, LCP, CLS) · SEO
🤖 LLM 활용
언제: 매 traffic-heavy content site, 매 PLP/PDP, 매 article-driven SEO. 언제 X: 매 internal admin, 매 auth-only SaaS.
❌ 안티패턴
- Cart 까지 ISR: 매 stale price → 매 trust 붕괴.
- 3rd-party 30+ scripts on main thread: 매 INP 폭주.
- Image 원본 그대로: 매 5MB JPG → LCP 5초.
- ISR revalidate 너무 짧음 (1s): 매 origin 부하.
🧪 검증 / 중복
- Verified (Vercel docs, web.dev case studies, Cloudflare Workers).
- 신뢰도 A.
🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — content site tuning playbook |