Vercel
על מה Vercel גובה כסף, מה נעשה ב-28.10 כדי לשלם פחות, והעקרונות לכל פרויקט, שלנו ושל לקוח.
#vc-billing
על מה משלמים
כל השמות כאן הם השורות בעמוד Usage של הפרויקט: vercel.com/…/v0-project-overview/usage. בפרויקט של לקוח: אותו עמוד, בפרויקט שלו.
מה כל צעד מקטין
השמות הם השורות בעמוד Usage של הפרויקט. אחרי שינוי בודקים את השורה שלו שם, ביום-יומיים שאחרי.
| הצעד | מקטין את | כי | מקור |
|---|---|---|---|
| Retention של יום | Deployment Storage, Function Storage | פחות עותקים שמורים בכל יום. ה-production האחרונים ומה שעליו כתובת חיה נשמרים בכל מקרה. לא נוגע ב-build. | Deployment RetentionDeployment Retention › Exceptions |
| רק main בונה | Build CPU Minutes, Deployment Storage | ענף שכבוי ב-vercel.json לא יוצר deployment, אז אין build ואין עותק לשמור. | Git Configuration › git.deploymentEnabled |
| דוחפים במנות | Build CPU Minutes | Vercel בונה בכל push. push עם עשרה commits הוא build אחד. | Deploying Git Repositories |
| מכונה של 4 ליבות | Build CPU Minutes | דקת build מחויבת כפול הליבות. עלינו: חצי מכל build הוא העתקה, cache ופריסה, שליבות נוספות לא מקצרות. | Managing Builds › Build machines+ מדידה שלנו |
| תמונות דחוסות (AVIF) | Deployment Storage, Fast Data Transfer | הגודל של כל עותק הוא אחד משלושת הדברים שמגדילים את השורה, ופחות בייטים יוצאים לכל מבקר. עם retention של יום החיסכון הוא סנטים: הרווח העיקרי הוא מהירות האתר. | Deployment Storage › How usage growsCDN pricing and usage |
push אחד = build של כל האתר
להחליף כותרת בדף הבית מ"שלום" ל"שלום רב" בונה מחדש את כל העמודים ומעלה עותק מלא של האתר. אין build של עמוד אחד. מה שנחסך הוא ה-cache: חבילות וקוד שכבר קומפל משוחזרים מה-build הקודם, ולכן זה כדקה וחצי ולא יותר. מילה אחת עולה כמו עמוד שלם. commit לא עולה כלום: מה שנספר הוא push.
| איך | builds | עלות |
|---|---|---|
| 200 שינויים, push אחרי כל אחד | 200 | כ-$10 |
| 200 שינויים, push אחד | 1 | כ-5 סנט |
5 סנט ל-build: $23.24 חלקי 475 builds במחזור 11.10 עד 11.11. הדרך היחידה לשנות טקסט בלי build היא תוכן מחוץ לקוד (מערכת תוכן ורענון עמודים לפי דרישה). בפרויקט הזה התוכן בקוד.
Deploying Git RepositoriesManaging Builds › Build machines#vc-pages
מתקפת דפים
Issue פתוח (5.11): האתר נהיה ענקי בשכפולים. ה-build ספר כ-1,141 עמודים כשהתוכן האמיתי קטן בהרבה: עמודי הדמו לבד היו 868. כל עמוד הוא עוד זמן build, ו-build הוא מה שעולה כסף (למעלה). אנחנו מנסים למצוא דרך.
- לשפר את מנגנון הווריאנטים ולאחד תוכן בפנימיים. דמו עם כמה דפי בית בנה את כל העמודים הפנימיים מחדש לכל בית. עכשיו יש סט פנימיים אחד, והבית נזכר בדפדפן (Shared Inner Pages, 6.11). ורשימה בונה רק כמה עמודי פריט לדוגמה, והשאר מקשרים אליהם (נדל״ן 60 נכסים ל-3, בלוג 54 כתבות ל-12): המלל בעמוד הפריט כללי, אז הוא זהה בכל מקרה.
- הקטנת תמונות ועוד. תמונות הדמואים מכווצות לפני שהן נכנסות לקוד (npm run shrink).
הספירה, לפי ה-build: 1,141 (5.11) ← 772 (6.11, אחרי האיחוד) ← 646 (6.11, עם עמודי הדוגמה: דמואים 868 ← 356). המספר המעודכן: npx next build, השורה Generating static pages.
#vc-done
מה נעשה
- רק main בונהvercel.json, git.deploymentEnabled. ענפים של Claude, v0 ו-dependabot לא יוצרים build. בתוקף מה-push שמביא את הקובץ.
- מכונה קבועה של 4 ליבותנשאר Elastic בכוונה (28.10): קודם מודדים את retention ו-main בלבד, כי שינוי של כמה דברים יחד לא מראה מה השפיע. אחר כך: Build and Deployment, Build Machine, Standard. מחיר: כ-15 עד 20 שניות יותר לכל publish, כ-40% פחות לכל build (הערכה).
- Retention של יום28.10, בממשק: Project Settings, Build and Deployment, למטה: Deployment Retention Policy. ארבעת הסוגים על יום. Vercel שומר בכל מקרה את ה-production האחרונים (לפחות 10) ואת מה שעליו כתובת חיה, אז rollback נשאר.
- Retention של יום כברירת מחדל של הצוות28.10: Team Settings, Build and Deployment, Deployment Retention Policy, עם Apply this policy to all existing projects. פרויקט לקוח חדש מתחיל ביום. אצל לקוח זה כמעט לא משנה (כל העותקים שלו נכנסים ב-10 האחרונים), אבל גם לא מזיק. זהירות: הסימון הזה דורס את ההגדרה של כל פרויקט קיים.
- דחיסת התמונות (AVIF)בפלט כ-125MB של תמונות בדמואים ו-56MB בתיקיית public, מתוכם כ-23MB שאף עמוד לא משתמש בהם. אחרי ה-retention זה בעיקר עניין של מהירות, לא של החשבון. הכלים ב-/docs/images.
- export const dynamic = 'force-dynamic'לא בוצע, בכוונה: הפרומפט המקורי הציע אותו לכל דמו, אבל יצירת כל העמודים היא 6 שניות מה-build, והוא היה מעביר את העלות לכל כניסה ומאט את האתר.
✅ נעשה · ⏸ אחרי המדידה · ⬜ עוד לא · ❌ לא בוצע, בכוונה
המדידה: שינוי אחד בכל פעם
לפני 28.10, בממוצע ליום: כ-28 builds, כ-$1.37 על Build CPU Minutes, כ-$0.38 על Deployment Storage. retention של יום פועל מ-28.10. "רק main בונה" פועל מה-push שמביא את vercel.json. כשבוע אחרי ה-push משווים את שתי השורות בעמוד Usage ומריצים npm run vc -- builds --days 7. רק אחר כך מחליפים מכונה, ושוב שבוע.

#vc-rules
העקרונות
- דוחפים במנות. כל push ל-main הוא build. push אחרי כל commit הגיע ב-11 וב-12.10 ליותר מ-100 builds ביום.
- רק main בונה. הבדיקות רצות ב-GitHub על build משלהן. preview של ענף לא משמש אף אחד.
- לא force-dynamic כדי לחסוך build. מספר העמודים הוא לא מה שיקר. עמוד דינמי מעביר את העלות לכל כניסה ומאט את האתר.
- מכונה קטנה מספיקה. חצי מכל build הוא העתקה, שחזור cache, העלאה ופריסה. ליבות נוספות לא מקצרות אותם, אבל כן נספרות בחשבון.
- Retention של יום. הקוד שמור ב-git, וכל גרסה נבנית מחדש בדקה וחצי. rollback צריך רק את האחרונים, ו-Vercel שומר אותם בכל מקרה. עמוד ה-retention בדוקס שלהם לא מזכיר מחיר: הוא בעמוד Deployment Storage.
- תמונה נדחסת לפני commit. כל תמונה בפלט נשמרת מחדש בכל deployment.
- סרטון קצר נשאר בפרויקט. שני סרטוני ה-hero (6.6MB) עולים כסנט לחודש באחסון, וכל ה-Fast Data Transfer של האתר היה 2 סנט. שירות חיצוני (Cloudflare, Cloudinary) שווה רק לסרטון ארוך של עשרות MB, לווידאו שהוא התוכן עצמו, או לאתר עם הרבה תנועה.
- פרויקט של לקוח. לקוח עושה deploy לעתים רחוקות: ה-build כמעט לא עולה, וכל העותקים שלו נכנסים ב-10 האחרונים ש-Vercel שומר בכל מקרה, אז retention לא משנה אצלו. מה שכן: vercel.json מועתק, כדי שענפים לא יבנו.
// vercel.json: only main builds. "**" is every branch; a branch that
// matches both rules builds, because one of them says true.
{
"git": { "deploymentEnabled": { "**": false, "main": true } }
}#vc-terminal
מהטרמינל
הטוקן ב-~/.vercel-api/token.txt, מחוץ לריפו. נוצר ב-28.10 ל-60 יום, אז הוא פג בסביבות 27.12. טוקן חדש: vercel.com/account/settings/tokens, וה-Scope הוא הצוות. טוקן של Vercel נותן גישה מלאה, והסקריפט (scripts/vercel/vercel.mjs) רק קורא. שינוי הגדרה נעשה ידנית, או אחרי אישור.
npm run vc -- projectהמכונה, מדיניות ה-retention, Node. כאן רואים אם Vercel החליף מכונה לבד.npm run vc -- builds --days 30כמה deployments, לפי יעד, מצב, ענף ויום, עם דקות build.npm run vc -- buildציר הזמן של ה-build האחרון והמכונה שלו. אפשר להעביר מזהה dpl_ של build אחר.npm run vc -- storedכמה deployments שמורים עכשיו ומאיזה תאריך. על זה Deployment Storage גובה.#vc-start
נקודת הפתיחה, 27.10
- מחזור החיוב
- 11.10 עד 11.11, אחרי 17 ימים
- סה״כ
- $31.69
- Build CPU Minutes
- $23.24 (115 שעות ליבה)
- Deployment Storage
- $6.49
- Function Storage
- $1.55
- Deployments
- 475: 277 מ-main, 195 מענפים של Claude, 3 של dependabot
- מכונה
- 8 ליבות. Vercel בחר אותה לבד (elastic) בגלל build ארוך אחד בעבר
- Retention
- 30 יום לכל סוג (ברירת המחדל לצוות Pro חדש), 417 deployments שמורים

#vc-sources
