私の Node.js アプリは Express を使用しており、アプリにはツイート データを含む JSON ファイルを送信するルートがあります。20秒間キャッシュしたい。しかし、ブラウザ (Chrome または FireFox) で更新を押すたびに、すぐに新しいデータを取得します (毎秒行っても)。データは 20 秒ごとに変更されますが、それでも 20 秒のキャッシュが必要です。
これが私のルートです。
app.get('/tweet-stats.json', function(req, res) {
res.set('Cache-Control', 'public, max-age=20');
res.set('Expires', new Date(Date.now() + 20000));
res.set('Last-Modified', new Date(Date.now()));
res.set('Content-Type', 'application/json');
res.send(publicTweetStatus());
});
FireFox (FireBug) からの要求ヘッダーと応答ヘッダーは次のとおりです。
Response Headers
HTTP/1.1 200 OK
X-Powered-By: Express
Cache-Control: public, max-age=20
Expires: Fri May 10 2013 06:52:11 GMT+0000 (UTC)
Last-Modified: Fri May 10 2013 06:51:51 GMT+0000 (UTC)
Content-Type: application/json
Content-Length: 209
Connection: keep-alive
Request Headers
GET /tweet-stats.json HTTP/1.1
Host: mydevelopmenturl.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
サーバーに再度確認する前に、ブラウザーにこれを 20 秒間キャッシュさせるにはどうすればよいですか?
アップデート
そこで、robertklep の提案を試してみましたが、一部のブラウザー/OS では機能し、他のブラウザー/OS では機能しませんでした。
Ubuntu Chrome - キャッシュなし!!!!!!!!!!!!
Ubuntu FireFox - キャッシュなし!!!!!!!!!!!!!!!!
Windows 7 - Chrome - キャッシュ
Windows 7 - FireFox - キャッシュ
Windows 7 - IE 9 - キャッシュ
Windows 7 - Opera - キャッシュなし!!!!!!!!!!!!!!!!!
iOS Safari - キャッシュ
Mac OSX - Safari - キャッシュ
Mac OSX - Chrome - キャッシュ
Mac OSX - Firefox - キャッシュ
なぜ違いがあるのですか?