我會評論,但我今天剛加入,沒有任何聲望點。
如果我理解正確的話,你使用express.static(所以它只是一個普通的HTML頁面),但如果用戶登錄的,你用快遞的路由器服務的頁面,我是正確的?
我也猜你把提到的代碼來設置標題在網頁的路線。
如果是這樣的話,你的問題是不是瀏覽器的緩存,它的發生是由於的connect
中間件的性質。
中間件執行鏈中,要求在下單時,他們就完成了,這意味着,如果我假設正確,express.static是你的路由器之前調用,它只是充當靜態的HTML頁面。
所以永遠不會執行你的路線,因爲express.static不會叫next()
(一個明顯的原因,該文件存在)。
希望我假設正確。
編輯:
貌似我認爲是錯誤的。你確實說過它在你的筆記本電腦上工作正常,所以它看起來像一個客戶端緩存問題。
我還是不知道你使用express.static()或你的地方,你上面提到的代碼,我想給它一個鏡頭,沒有看到你的代碼究竟是如何顯示不同的網頁,但它可能是我和其他人需要幫助你。
這些響應標題應設置在第一個響應中(當您訪問主頁時),它與重定向無關。現在讓我們把重定向部分放在旁邊。
我寫了一個快速(特快)例如:
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
因此,大家可以看到,它的工作原理但你可以自己運行這個代碼。
如果要運行它,您需要express
在node_modules
之下或全局安裝(使用-g
標誌)。
這些標題需要寫在你不想緩存的頁面上('/'),而不是你正在做重定向的頁面,對不對? – 2012-07-13 18:20:01
正確。是的,可能是把他們放在錯誤的地方。去看看這個。 – 2012-07-13 18:22:53
您的問題不涉及瀏覽器緩存。無論出於何種原因,Express都會發送一個304而不是實際的重定向,並且瀏覽器正在作出適當的響應(即保留舊版本)。這聽起來像是由Express完成的某種內部緩存;你有沒有可能使用express.static來爲相關頁面提供服務? – ebohlman 2012-07-13 21:44:51