मैं टिप्पणी करता हूं लेकिन मैं अभी शामिल हो गया हूं और इसमें कोई प्रतिष्ठा नहीं है।
यदि मैं इसे सही ढंग से समझता हूं, तो आप एक्सप्रेस.स्टैटिक का उपयोग कर पृष्ठ की सेवा कर रहे हैं (इसलिए यह केवल एक सादा HTML पृष्ठ है) लेकिन यदि उपयोगकर्ता साइन-इन है, तो आप एक्सप्रेस के राउटर का उपयोग करते हैं, क्या मैं सही हूं?
मैं यह भी अनुमान लगा रहा हूं कि आपने हेडर को होमपेज के रूट में सेट करने के लिए उल्लिखित कोड डाला है।
यदि ऐसा है, तो आपकी समस्या ब्राउज़र-कैशिंग नहीं है, यह connect
मध्यवर्ती प्रकृति की वजह से होती है।
मिडलवायर एक श्रृंखला में निष्पादित करते हैं, जो उन्हें पूरा होने पर कॉल करते हैं, जिसका अर्थ है, अगर मैं सही ढंग से मानता हूं, तो एक्सप्रेस.स्टैटिक को आपके राउटर से पहले बुलाया जाता है और यह केवल स्थिर HTML पृष्ठ की सेवा करता है।
तो आपका मार्ग कभी निष्पादित नहीं होता है क्योंकि express.static next()
पर कॉल नहीं करेगा (एक स्पष्ट कारण के लिए, फ़ाइल मौजूद है)।
आशा है कि मैंने सही मान लिया है।
संपादित करें:
ऐसा लगता है कि मैं गलत ग्रहण किया। आपने कहा था कि यह आपके लैपटॉप पर ठीक काम करता है, इसलिए यह निश्चित रूप से क्लाइंट-साइड कैशिंग समस्या जैसा दिखता है।
मुझे अभी भी यकीन नहीं है कि आप एक्सप्रेस.स्टैटिक() का उपयोग करके एक अलग होमपेज कैसे प्रदर्शित करते हैं या आप ऊपर बताए गए कोड को कहां रखते हैं, मैं इसे आपके कोड को देखे बिना एक शॉट देने जा रहा हूं लेकिन यह हो सकता है आपकी मदद करने के लिए मेरे और दूसरों के लिए जरूरी है।
उन प्रतिक्रिया शीर्षलेखों को पहली प्रतिक्रिया में सेट किया जाना चाहिए (जब आप मुखपृष्ठ पर जाते हैं), इसका रीडायरेक्ट से कोई लेना देना नहीं है। आइए अब रीडायरेक्ट पार्ट एसाइड्स डालें।
var express = require('express'),
http = require('http')
app = express();
app.configure(function() {
app.set('port', process.env.PORT || 3000);
app.use(express.logger('dev'));
/*
* Here's where I set the headers, make sure it's above `express.static()`.
*
* Note: You can safely ignore the rest of the code, (it's pretty much "stock").
*/
app.use(function noCachePlease(req, res, next) {
if (req.url === '/') {
res.header("Cache-Control", "no-cache, no-store, must-revalidate");
res.header("Pragma", "no-cache");
res.header("Expires", 0);
}
next();
});
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function() {
app.use(express.errorHandler());
});
http.createServer(app).listen(app.get('port'), function() {
console.log("Express server listening on port " + app.get('port'));
});
यह कोड अपने ब्राउज़र का निर्देश पेज कैश करने के लिए नहीं:
मैं एक त्वरित (व्यक्त) उदाहरण के लिए लिखा था।
प्रतिक्रिया हेडर मैं बिना मिल noCachePlease
मिडलवेयर:
Accept-Ranges bytes
Cache-Control public, max-age=0
Connection keep-alive
Content-Length 5
Content-Type text/html; charset=UTF-8
Date Fri, 20 Jul 2012 19:25:38 GMT
Etag "5-1342811956000"
Last-Modified Fri, 20 Jul 2012 19:19:16 GMT
X-Powered-By Express
प्रतिक्रिया हेडर मैंnoCachePlease
मिडलवेयर साथ मिलती है:
Accept-Ranges bytes
Cache-Control no-cache, no-store, must-revalidate
Connection keep-alive
Content-Length 5
Content-Type text/html; charset=UTF-8
Date Fri, 20 Jul 2012 19:26:08 GMT
Etag "5-1342811956000"
Expires 0
Last-Modified Fri, 20 Jul 2012 19:19:16 GMT
Pragma no-cache
X-Powered-By Express
तो जैसा कि आप देख सकते हैं, यह काम करता है लेकिन आप इस कोड को स्वयं चला सकते हैं।
यदि आप इसे चलाने के लिए चाहते हैं, तो आपको node_modules
के तहत या वैश्विक स्तर पर स्थापित करने की आवश्यकता होगी (-g
ध्वज के साथ)।
उन शीर्षकों को उस पृष्ठ पर लिखा जाना होगा जिसे आप कैश नहीं करना चाहते हैं ('/'), न कि पृष्ठ जहां आप रीडायरेक्ट कर रहे हैं, है ना? –
सही। हाँ, शायद उन्हें गलत जगह पर स्थापित कर रहा हूँ। इसे देखने के लिए जा रहे हैं। –
आपकी समस्या में ब्राउज़र कैशिंग शामिल नहीं है। किसी भी कारण से, एक्सप्रेस वास्तविक रीडायरेक्ट के बजाय 304 भेज रहा है, और ब्राउज़र उचित प्रतिक्रिया दे रहा है (यानी पुराने संस्करण को रखते हुए)। ऐसा लगता है कि एक्सप्रेस द्वारा कुछ प्रकार की आंतरिक कैशिंग की जा रही है; प्रश्न में पेज की सेवा करने के लिए क्या आप एक्सप्रेस.स्टैटिक का उपयोग कर किसी भी मौके से हैं? – ebohlman