2015-08-22 5 views
10

NodeJS के लिए ExpressJS में, हमने निम्न कर सकते हैं:क्या स्मृति में express.static() कैश फ़ाइलें करता है?

app.use(express.static(__dirname + '/public')); 

सभी स्थैतिक सीएसएस, जे एस, और छवि फ़ाइलों की सेवा के लिए। मेरे प्रश्न ये हैं:

1) जब हम ऐसा करते हैं, तो क्या एक्सप्रेस स्वचालित रूप से सर्वर की मेमोरी में फ़ाइलों को कैश करता है या क्या हर बार संसाधनों में से एक को हार्ड डिस्क से पढ़ा जाता है?

2) जब हम ऐसा करते हैं, तो डिफ़ॉल्ट रूप से ईटीएजी का उपयोग करके एक्सप्रेस करता है, क्लाइंट की हार्ड डिस्क पर संसाधनों को बचाता है, या केवल ग्राहक की स्मृति पर?

+1

1 की तरह कुछ का उपयोग कर सकते कृपया ध्यान दें कि अगर एक्सप्रेस ऐसा नहीं करता है (मुझे यकीन नहीं है), तो आपका ऑपरेटिंग सिस्टम वास्तव में कर सकता है। –

उत्तर

25
  1. स्थैतिक मिडलवेयर कोई सर्वर-साइड कैशिंग नहीं करता है। ETag और अधिकतम उम्र:: ब्राउज़र पृष्ठ के साथ ETag देखता

, तो इसे कैश होगा यह आप क्लाइंट-साइड संचय के दो तरीके अपना काम करने दिया। अगली बार जब ब्राउजर पेज लोड करता है तो यह ईटीएजी नंबर परिवर्तनों की जांच करता है। अगर फ़ाइल बिल्कुल वही है, और इसका ईटीएजी भी है - सर्वर सभी बाइट्स को दोबारा भेजने के बजाय HTTP 304 ("संशोधित नहीं") स्टेटस कोड के साथ प्रतिक्रिया देता है और बैंडविड्थ का एक गुच्छा बचाता है। ETag डिफ़ॉल्ट रूप से बने पर है, लेकिन आप इस तरह इसे बंद कर सकते हैं:

app.use(express.static(myStaticPath, { 
    etag: false 
})) 

अधिकतम उम्र तो ब्राउज़र उस संसाधन के बाद ही अनुरोध करेंगे के कुछ समय तक के लिए अधिकतम उम्र सेट हो जाएगा है एक दिन बीत चुका है

app.use(express.static(myStaticPath, { 
    maxage: '2h' 
})) 

अधिक जानकारी के लिए आप पढ़ सकते हैं इस article

  1. डिफ़ॉल्ट रूप से यह हार्ड ड्राइव पर है, लेकिन किसी को this
+0

तो यह सर्वर हार्ड डिस्क से हर बार पढ़ने की कोशिश करता है ... ब्राउज़र के बारे में कैसे? ब्राउजर बंद होने पर ब्राउज़र अभी भी संसाधन को याद रखता है? –

+0

यदि कैश बनी रहती है। –

+0

दान डी ...... मुझे लगता है कि आप कह रहे हैं कि संसाधन वास्तव में ग्राहक की हार्ड डिस्क में संग्रहीत हैं ... कैश जारी रहता है और जारी नहीं रहता है? –

संबंधित मुद्दे