Express.js节点框架 - 不缓存

时间:2013-05-10 07:18:37

标签: node.js caching express browser-cache

我的Node.js应用程序使用Express,我的应用程序有一个发送带有Tweet数据的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的建议,它在某些浏览器/操作系统中起作用,而不是在其他浏览器/操作系统中起作用:

Ubuntu Chrome - 没有缓存!!!!!!!!!!!!
Ubuntu FireFox - 没有缓存!!!!!!!!!!!!!!!
Windows 7 - Chrome - 缓存
Windows 7 - FireFox - 缓存
Windows 7 - IE 9 - 缓存
Windows 7 - Opera - No Cache !!!!!!!!!!!!!!!!!
iOS Safari - 缓存
Mac OSX - Safari - 缓存
Mac OSX - Chrome - 缓存
Mac OSX - Firefox - 缓存

为什么会出现差异?

0 个答案:

没有答案