mirror of
https://github.com/mmahdium/portfolio.git
synced 2026-09-28 10:31:44 +03:30
150 lines
5.4 KiB
Markdown
150 lines
5.4 KiB
Markdown
# راهنمای تست SSG (Static Site Generation)
|
|
|
|
## چطور بفهمیم SSG درست کار میکنه؟
|
|
|
|
### 1. بررسی فایلهای تولید شده
|
|
|
|
اول بررسی کن که فایلهای HTML واقعاً تولید شدن:
|
|
|
|
```bash
|
|
# بررسی ساختار فایلها
|
|
ls .output/public/blog
|
|
ls .output/public/fa/blog
|
|
|
|
# باید این فایلها رو ببینی:
|
|
# - index.html (صفحه لیست بلاگ)
|
|
# - getting-started-with-nuxt-content/index.html
|
|
# - nuxt-ui-components/index.html
|
|
# - typescript-best-practices/index.html
|
|
```
|
|
|
|
### 2. اجرای Preview Server
|
|
|
|
```bash
|
|
pnpm preview
|
|
```
|
|
|
|
این command یک static file server ساده راهاندازی میکنه که فقط فایلهای HTML رو serve میکنه (بدون Node.js server).
|
|
|
|
### 3. تستهای اصلی برای تأیید SSG
|
|
|
|
#### ✅ تست 1: بررسی HTML Source
|
|
|
|
1. مرورگر رو باز کن و برو به: `http://localhost:3000/blog`
|
|
2. کلیک راست کن و "View Page Source" یا `Ctrl+U` بزن
|
|
3. **چیزی که باید ببینی:**
|
|
- تمام محتوای HTML از قبل موجود هست (نه فقط `<div id="app"></div>`)
|
|
- تگهای `<meta>` برای SEO
|
|
- محتوای کامل پستهای بلاگ در HTML
|
|
- **اگه فقط یک div خالی دیدی = SSG کار نکرده ❌**
|
|
- **اگه محتوای کامل دیدی = SSG موفق ✅**
|
|
|
|
#### ✅ تست 2: بررسی Network با اینترنت قطع
|
|
|
|
1. مرورگر رو باز کن
|
|
2. DevTools رو باز کن (`F12`)
|
|
3. به تب Network برو
|
|
4. صفحه رو Refresh کن
|
|
5. **چیزی که باید ببینی:**
|
|
- فقط یک request برای `index.html` (نه API call برای fetch کردن پستها)
|
|
- فایل HTML حجم زیادی داره (چون محتوا توش هست)
|
|
- **اگه API call دیدی = SSR یا CSR هست، نه SSG ❌**
|
|
- **اگه فقط HTML دیدی = SSG موفق ✅**
|
|
|
|
#### ✅ تست 3: Disable JavaScript
|
|
|
|
1. DevTools رو باز کن (`F12`)
|
|
2. `Ctrl+Shift+P` بزن (Command Palette)
|
|
3. تایپ کن: "Disable JavaScript"
|
|
4. صفحه رو Refresh کن
|
|
5. **چیزی که باید ببینی:**
|
|
- محتوای بلاگ همچنان نمایش داده میشه
|
|
- فقط interactive features کار نمیکنن (مثل navigation)
|
|
- **اگه صفحه خالی شد = SSG نیست ❌**
|
|
- **اگه محتوا نمایش داده شد = SSG موفق ✅**
|
|
|
|
#### ✅ تست 4: بررسی سرعت بارگذاری
|
|
|
|
1. DevTools > Network > Throttling رو روی "Fast 3G" بذار
|
|
2. صفحه رو Refresh کن
|
|
3. **چیزی که باید ببینی:**
|
|
- محتوا خیلی سریع نمایش داده میشه (حتی با اینترنت کند)
|
|
- Time to First Contentful Paint (FCP) کمتر از 1 ثانیه
|
|
- **SSG = محتوا فوری نمایش داده میشه ✅**
|
|
- **SSR/CSR = باید منتظر بمونی تا محتوا load بشه ❌**
|
|
|
|
#### ✅ تست 5: بررسی Sitemap
|
|
|
|
```bash
|
|
# بررسی sitemap
|
|
curl http://localhost:3000/sitemap_index.xml
|
|
# یا در مرورگر:
|
|
# http://localhost:3000/sitemap_index.xml
|
|
```
|
|
|
|
باید لیست تمام URLهای بلاگ رو ببینی.
|
|
|
|
### 4. مقایسه SSG با SSR/CSR
|
|
|
|
| ویژگی | SSG (Static) | SSR (Server) | CSR (Client) |
|
|
|-------|-------------|--------------|--------------|
|
|
| HTML در source | ✅ کامل | ✅ کامل | ❌ خالی |
|
|
| نیاز به Node.js | ❌ نه | ✅ بله | ❌ نه |
|
|
| API Calls | ❌ نه | ✅ بله | ✅ بله |
|
|
| سرعت | ⚡ خیلی سریع | 🚀 سریع | 🐌 کند |
|
|
| SEO | ✅ عالی | ✅ عالی | ⚠️ ضعیف |
|
|
| هزینه Hosting | 💰 ارزان | 💰💰 گران | 💰 ارزان |
|
|
|
|
### 5. تست با curl (بدون مرورگر)
|
|
|
|
```bash
|
|
# دریافت HTML خام
|
|
curl http://localhost:3000/blog/getting-started-with-nuxt-content
|
|
|
|
# اگه محتوای کامل HTML رو دیدی = SSG موفق ✅
|
|
# اگه فقط یک div خالی دیدی = SSG کار نکرده ❌
|
|
```
|
|
|
|
### 6. بررسی فایل HTML مستقیماً
|
|
|
|
```bash
|
|
# باز کردن فایل HTML در مرورگر
|
|
start .output/public/blog/getting-started-with-nuxt-content/index.html
|
|
|
|
# یا در VSCode:
|
|
code .output/public/blog/getting-started-with-nuxt-content/index.html
|
|
```
|
|
|
|
باید تمام محتوای پست رو در HTML ببینی.
|
|
|
|
## 🎯 نتیجهگیری
|
|
|
|
**SSG موفق است اگر:**
|
|
- ✅ فایلهای HTML با محتوای کامل تولید شدن
|
|
- ✅ View Source محتوای کامل رو نشون میده
|
|
- ✅ بدون JavaScript هم محتوا نمایش داده میشه
|
|
- ✅ هیچ API call برای fetch کردن محتوا نیست
|
|
- ✅ سرعت بارگذاری خیلی سریعه
|
|
- ✅ Sitemap تولید شده
|
|
|
|
**SSG کار نکرده اگر:**
|
|
- ❌ View Source فقط یک div خالی نشون میده
|
|
- ❌ API call برای fetch کردن پستها وجود داره
|
|
- ❌ بدون JavaScript صفحه خالی میشه
|
|
- ❌ محتوا با تأخیر load میشه
|
|
|
|
## 🚀 Deploy
|
|
|
|
وقتی مطمئن شدی SSG درست کار میکنه، میتونی deploy کنی:
|
|
|
|
```bash
|
|
# فولدر .output/public رو به هر static hosting آپلود کن:
|
|
# - Vercel
|
|
# - Netlify
|
|
# - Cloudflare Pages
|
|
# - GitHub Pages
|
|
# - AWS S3 + CloudFront
|
|
```
|
|
|
|
هیچ Node.js server لازم نیست! فقط فایلهای استاتیک.
|