私はコメントしたいと思いますが、今日は参加して評判のポイントはありません。
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
フラグ付き)。
これらのヘッダーは、リダイレクトを行っているページではなく、キャッシュしないページ( '/')に書き込む必要があります。 –
修正。ええ、おそらく間違った場所に置いています。これを調べるつもりです。 –
問題はブラウザのキャッシュに関係しません。何らかの理由で、Expressは実際のリダイレクトではなく304を送信しており、ブラウザは適切に応答しています(つまり、古いバージョンを保持しています)。それは、Expressによって行われている内部キャッシュのようなものです。 Express.staticを使用して問題のページを提供していますか? – ebohlman