לשאלה ב' יש אופציה בPM של watch שאמורה להפעיל אוטומטית, אבל אני ממליץ לעשות ידנית ולשלוט בעניין.
לשאלה ג' כדאי שהנתונים יכתבו גם במסד נתונים כל שהוא במקביל להיותם במשתנה, ככה במקרה של הפעלה מחדש לא נאבד שום חומר (כמעט).
לשאלה ד'
זו שאלה יפה, שכמו רוב שאלותיך עוקפים בהרבה את המקום הטבעי שם אתה אמור להיות בשלב זה, לא רק מבחינת לימודים, אלא שזה באמת לא קריטי כל העדינויות האלה, תתרגל להתאכזר על השרת ואל תיתן לשאיפות מיטוב קטנות לעצור אותך עד שיש לך רעיון או דרך שכולה באה להקל על המחשב וממש לא להקל עליך.
אז התשובה עבורך מבחינתי, זה פשוט לעדכן כל שתי שניות בלי קשר לביקורים ולהפסיד את האופטימיזציה שאתה רוצה בה (וזה מאוד הגיוני, כי (בדרך כלל) אתה לא מרויח משהו מהזמן בו השרת "נח").
ובכל זאת אני אתייחס גם לגופה של שאלה. ההוא שמגיע אחרי שתי שניות יחכה טיפה יותר, זה שטויות לחלוטין - שיחשוב שעברנו לPHP :). בעיה של התנגשות של שתי בקשות אין פה אם מבצעים זאת בצורה טובה. אני הייתי פותר את זה עם Promise (מושג נחמד, אל תילחץ להבין אותו, אתה עוד תגיע אליו):
let lastTime = 0;
let freq = 1000 * 60 * 2
let lastData = null;
app.get('/last-state', function(req, res){
if(new Date() - lastTime > freq){
lastTime = new Date();
lastData = new Promise(getDataFromDb);
}
lastData.then(function(data) {
res.json(data);
});
});
הייתי מעדיף שתיצא מה"מתחילות" שלך ותתחיל ליחד אשכול לכל שאלה בלי נקיפות מצפון.