2013-02-01 25 views
13

विकास के दौरान कभी-कभी HTTP 304 प्रतिक्रियाओं (200 के पक्ष में) को रोकने के लिए वास्तव में अच्छा होगा, और Connect/Express static middleware का कारण फाइल सिस्टम से प्रत्येक प्रतिक्रिया को पढ़ने के लिए, किसी भी कैशिंग को करने के बजाय।कनेक्ट/एक्सप्रेस स्थैतिक मिडलवेयर में HTTP 304 प्रतिक्रियाओं को पूरी तरह से कैसे रोकें?

मैं 1 maxAge 0 के मूल्यों और के साथ खेल की कोशिश की है, कोई लाभ नहीं हुआ:

app.use(express.static(__dirname + '/public', { maxAge: 1 })) 

उत्तर

16

मैं विकास के दौरान ऐसा करने से 200 प्रतिक्रियाएं मिलती है:

var express = require('express'); 
app = express(); 
app.use(function(req, res, next) { 
    req.headers['if-none-match'] = 'no-match-for-this'; 
    next();  
}); 
+0

उत्पादन वातावरण पर इसका उपयोग करने के लिए क्या असर पड़ता है? मैं इसे विकास के लिए उपयोग कर रहा हूं, लेकिन मुझे डर है कि अगर मैं इसे हटा दूं तो मेरे उपयोगकर्ताओं को एक ही समस्या होगी। – Hawkee

+0

यह विकास के लिए एकदम सही है। मेरा मानना ​​है कि यदि आप उत्पादन में गतिशील व्यवहार चाहते हैं, तो एक अलग मार्ग बनाकर फाइलों को तदनुसार सेवा देना चाहिए। असली दुनिया परियोजनाओं को वास्तव में स्थिर संसाधनों और गतिशील लोडिंग की अनुमति देने के तरीके के लिए 304 दोनों काम करने की आवश्यकता होगी। – Andrei

+0

धन्यवाद। यह मेरे लिए काम किया। – unicornherder

2

यह समाधान सिर्फ एक समाधान नहीं है। आप ब्राउज़र पक्ष से समस्या को disabling caching in Chrome द्वारा हल कर सकते हैं। यदि आपको आईओएस पर सफारी की तरह क्रोम के बाहर कुछ काम करने की ज़रूरत है तो यह आपकी मदद नहीं करता है।

+0

मदद मिल सकती है मैं देख रहा हूँ कि ऐसा क्यों स्वीकार किया जाता है जवाब के रूप में सेवा उपभोक्ताओं ब्राउज़रों केवल नहीं हैं न लेकिन अन्य सेवाएं या तृतीय पक्ष सॉफ़्टवेयर –

6

यह प्रत्येक प्रतिक्रिया पर फ़ाइल सिस्टम से पढ़ता है। यह सिर्फ इतना है कि यदि अनुरोध ETAG प्रतिक्रिया ETAG से मेल खाता है, तो यह प्रतिक्रिया के शरीर को नहीं भेजता है क्योंकि इसे नहीं करना है। यह वही हैश के साथ एक ही फाइल है। इस तरह 304 प्रतिक्रियाएं काम करती हैं।

आप 304 प्रतिक्रियाओं को क्यों रोकना चाहते हैं?

+4

हो सकता है, इसने मुझे नरक को भ्रमित कर दिया है कि एक्सप्रेस 304 के बाद क्यों वापस आएगा। धन्यवाद! –

+3

क्योंकि कमजोर etags कैश जेएस फाइलें जो फ्रंटेंड देव दोस्त में दर्द हो सकता है। –

6
app.disable('etag'); 

रोकने जवाब में 'ETag'

+1

यह 4.0 शाखा में स्थिर मिडलवेयर को प्रभावित नहीं करता है ... –

+0

हम इसे कहां जोड़ते हैं? – SharpCoder

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