במדריך הזה מתוארות אופטימיזציות לשירותי Cloud Run שנכתבו ב-JavaScript או ב-TypeScript, ופועלים בזמן הריצה של Node.js. המידע בדף הזה הוא תוספת לטיפים כלליים לפיתוח, שרלוונטיים גם ל-Node.js.
אופטימיזציה של זמן ההפעלה
אופטימיזציה של זמן ההפעלה יכולה להפחית את זמן האחזור, לשפר את מהירות התגובה ולהשיג אופטימיזציה יעילה של העלויות. בקטע הזה מתוארות דרכים שונות לאופטימיזציה של זמן ההפעלה.
הפעלת האפליקציה באמצעות node במקום npm
כדאי להשתמש ב-node index.js כדי להפעיל את האפליקציה ישירות במקום ב-npm start,
כי npm מוסיף זמן אחזור.
כדי להתחיל את השימוש באפליקציה עם node index.js, אפשר לפעול באחת מהשיטות הבאות:
משתמשים ב-
CMD node index.jsבקובץ Dockerfile, לדוגמה:CMD node index.jsהגדרת
node index.jsכנקודת הכניסה. מריצים את הפקודה הבאה באמצעות Google Cloud CLI:gcloud run deploy SERVICE --command "node index.js"מידע נוסף ואפשרויות להגדרת נקודות כניסה זמינים במאמר הגדרת קונטיינרים לשירותים.
אם אתם משתמשים בפריסות מקוד מקור בלי קובץ Dockerfile, המערכת של Cloud Run מבצעת את האופטימיזציה.
חבילת קוד
חבילת קבצים היא כלי בנייה שמבצע אופטימיזציה של הפריסה של קובצי המקור של JavaScript כדי לקצר את זמני הטעינה. חלק מהאופטימיזציות הנפוצות של חבילות כוללות tree shaking, מזעור ומיזוג של קבצים קטנים. הכלי Bundlers מקטין באופן משמעותי את הגודל הכולל של החבילה ומצמצם את מספר בקשות הקריאה של הקבצים. חלק מהכלים הנפוצים ליצירת חבילות JavaScript הם esbuild, webpack ו-rollup.
טעינה מדורגת של פניות קשורות
בזמן ההפעלה, Cloud Run מזרימה כל קובץ שהקוד טוען ממיקום מרוחק. בהשוואה למערכת קבצים מקומית, שימוש במיקום מרוחק מוביל לזמן אחזור נוסף בכל פעם שקוראים קובץ. יכול להיות שחבילות Node.js ישתמשו בהרבה קבצים עם תלות עקיפה. במקום לייבא את כל התלויות בהפעלה, מומלץ לטעון רק את התלויות שנדרשות להפעלת השרת, ולטעון את שאר התלויות באמצעות ייבוא דינמי.
לדוגמה, במקום להשתמש בייבוא בחלק העליון של המודול, כמו import { Storage } from '@google-cloud/storage', משתמשים ב-import() בפונקציה כשנדרש האובייקט המיובא, למשל:
const { Storage } = await import('@google-cloud/storage');
כדי לזהות מודולים שנפרסים במהלך ההפעלה ואת הזמן שלוקח לכל מודול להיפרס במחשב, מריצים את הפקודה הבאה:
node --trace-event-categories node.module_timer --trace-event-file-pattern 'trace-events.log' index.js
הגדרת הזמן הקצוב לתפוגה
ב-Node.js מגרסה 14 ואילך, לשרת ה-HTTP המובנה יש זמן קצוב לתפוגה כברירת מחדל של 0 (ללא זמן קצוב לתפוגה). בגרסאות Node.js קודמות לגרסה 14, ברירת המחדל של הזמן הקצוב הייתה 2 דקות. אם פסק הזמן של הבקשה בשירות Cloud Run ארוך יותר, צריך לשנות את פסק הזמן באמצעות server.setTimeout(msecs). צריך גם לשנות את הזמן הקצוב לתפוגה של מסגרות שנבנו על שרת Node.js, כמו Express. כדי להגדיר פסק זמן ללא הגבלה ב-Node.js ולהסתמך על פסק הזמן המובנה של Cloud Run, משתמשים בפונקציה server.setTimeout(0).