में फ़ाइल के अस्तित्व की जांच करने का सबसे तेज़ तरीका मैं नोड में एक सुपर सरल सर्वर का निर्माण कर रहा हूं और मेरे ऑनवेस्ट श्रोता में मैं यह निर्धारित करने की कोशिश कर रहा हूं कि मुझे एक स्थिर फ़ाइल (डिस्क से बाहर) या कुछ जेसन की सेवा करनी चाहिए या नहीं (शायद मोंगो से खींचा गया) request.url
में पथ के आधार पर।नोडजेस
वर्तमान में मैं पहले फ़ाइल को स्टेट करने की कोशिश कर रहा हूं (क्योंकि मैं कहीं और mtime का उपयोग करता हूं) और यदि यह असफल नहीं होता है तो मैं डिस्क से सामग्री को पढ़ता हूं। कुछ इस तरह:
fs.stat(request.url.pathname, function(err, stat) {
if (!err) {
fs.readFile(request.url.pathname, function(err, contents) {
//serve file
});
}else {
//either pull data from mongo or serve 404 error
}
});
request.url.pathname
के लिए fs.stat
का परिणाम cacheing अलावा, कुछ है कि इस जांच में तेजी लाने सकता है? उदाहरण के लिए, यह stat
के बजाय fs.readFile
त्रुटियों को देखने के लिए जितना तेज़ होगा? या fs.readFile
के बजाय fs.createReadStream
का उपयोग कर रहे हैं? या क्या मैं संभावित रूप से child_process.spawn
में कुछ का उपयोग कर फ़ाइल की जांच कर सकता हूं? असल में मैं यह सुनिश्चित करना चाहता हूं कि जब मैं डेटा के लिए अनुरोध के लिए मोंगो को भेजा जाना चाहिए तो मैं कोई अतिरिक्त समय गड़बड़ाना w/fileio खर्च नहीं कर रहा हूं ...
धन्यवाद!
मदद कर सकते हैं मैं हमेशा 'stat' या' statSync' का उपयोग किया है मेरी जरूरतों के आधार पर (जैसे ' statSync' कॉन्फ़िगरेशन में), लेकिन मुझे लगता है कि यह तकनीकी रूप से 'readfile' करने के लिए तेज़ होगा और एक त्रुटि पकड़ लेगा (हालांकि जेएस में त्रुटि पकड़ने ___very___ भारी है, इसलिए मैं गलत हो सकता हूं)। आम तौर पर, हालांकि, मैं बस 'stat' का उपयोग करना पसंद करूंगा क्योंकि यह जानबूझकर त्रुटि को फेंकने से साफ़ है। सामान्य रूप से 'child_process' से बचें क्योंकि 'नोड' विंडोज सिस्टम पर धक्का दे रहा है और इसका उपयोग करने वाला कोई भी कोड तोड़ देगा। –
@ लाइट बाइट आपको डेडडेनडी द्वारा दिए गए उत्तर को गंभीरता से स्वीकार करना चाहिए ... –