Express JS - 静态文件未从缓存中提供

时间:2015-08-04 21:19:25

标签: node.js http caching express webserver

我在Express上运行应用程序,我的浏览器一直在提取应该已经缓存的文件。违规文件的状态代码为304,大小始终为220 B / 221 B.其他资源(正在服务正常)显示'(来自缓存)'。

更多信息:ETags /文件内容没有改变,我设置了一些响应头。

    res.set('Cache-Control', 'max-age=345600');
    res.set('Expires', new Date(Date.now() + 345600000).toUTCString());

Cache Fail http://www.imageno.com/image.php?id=mekl0pw40qr5&kk=619682137

不可否认,我不是HTTP专家,但也许有人可以帮我理解为什么会这样?

1 个答案:

答案 0 :(得分:1)

本质上,浏览器正在缓存并提供缓存的包(尽管它不显示“来自缓存”消息)。为了服务它们,它向服务器发送请求并检查文件是否已更改。如果它没有改变,服务器发送304响应代码,浏览器从缓存中提取文件。这需要大约15-50毫秒,因此它不会对性能产生重大影响。

但是,我可以强制浏览器显示文件而不发送验证请求(例如外部托管库)。这需要为远期设置expires / cache-control标头,为静态资产设置时间戳文件名并动态提供它们(通过将更新的文件名写入配置文件或类似的东西),但我认为这将是比老实说更麻烦。

只需针对遇到同一问题的任何人发布此回复。