【问题标题】:Express JS - Static files not being served from cacheExpress JS - 未从缓存中提供静态文件
【发布时间】:2015-10-27 11:07:01
【问题描述】:

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

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

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


(来源:imageno.com)

诚然,我不是 HTTP 专家,但也许有人可以帮助我理解为什么会发生这种情况?

【问题讨论】:

    标签: node.js http caching express webserver


    【解决方案1】:

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

    但是,我可以强制浏览器在不发送验证请求的情况下显示文件(例如外部托管的库)。这将需要为遥远的将来设置过期/缓存控制标头,为静态资产的文件名加上时间戳并动态提供它们(可能通过将更新的文件名写入配置文件或类似的东西),但我认为这将是老实说,麻烦多于值得。

    仅为遇到相同问题的任何人发布此回复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-19
      • 2017-07-12
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 2018-05-12
      相关资源
      最近更新 更多