コメントしたいのですが、今日入会したばかりで評判ポイントがありません。
私が正しく理解している場合は、express.static を使用してページを提供しています (つまり、プレーンな HTML ページです)。ただし、ユーザーがサインインしている場合は、express のルーターを使用しています。正しいですか?
また、前述のコードを配置して、ヘッダーをホームページのルートに設定したと思います。
その場合、問題はブラウザのキャッシュではなく、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