【问题标题】:Status code 304 (Jade, Node, Express)状态码 304(Jade、Node、Express)
【发布时间】:2017-03-27 17:52:52
【问题描述】:

我在我的jade文件中链接了bootstrap和jquery,

link(rel='stylesheet', href='/stylesheets/bootstrap.css')

和

script(src='/javascripts/jquery-3.1.1.js')
script(src='/javascripts/bootstrap.js')

此 Jade 文件位于我的视图文件夹中。 boostrap css 在我的 public/stylesheets 文件夹中,而 javascript 在 public/javascripts 文件夹中。

当我使用 nodemon 运行我的应用程序时,它说

GET / 200 80ms - 1.65kb
GET /stylesheets/bootstrap.css 304 1ms
GET /javascripts/jquery-3.1.1.js 304 3
GET /javascripts/bootstrap.js 304 2ms

javascript 和 css 文件未加载。

建议?

【问题讨论】:

  • 304 响应表示资源未被修改。这有什么问题?

标签: javascript css node.js express pug


【解决方案1】:

304 未修改

如果客户端已经执行了一个有条件的 GET 请求并且访问是 允许,但文档没有被修改,服务器应该 使用此状态码进行响应。 304 响应不得包含 消息体,因此总是由第一个空行终止 在标题字段之后。

服务器将304http 状态发送给客户端(浏览器),让其知道自从浏览器上次收到带有200 状态代码的文件副本以来,该文件未被修改。发生这种情况时,通常浏览器应该有cached copy 的文件,并且会从cache 加载相同的文件。

最好,通过删除所有临时文件、历史记录等来清除所有浏览器 cache,然后关闭并重新打开(重新启动)浏览器。

重新加载页面并再次检查nodemon 中的状态码。这次应该是200。

【讨论】:

  • 这是有道理的。但是,我仍然对为什么 css 和 js 文件不会在浏览器中加载感到困惑。如果它们被缓存,它们不应该工作吗?
  • 是的,它们应该从缓存中加载。请尝试清除缓存。
【解决方案2】:

要完全摆脱这种状态,您可以添加标题

res.header('Cache-Control', 'no-cache, no-store, must-revalidate')

【讨论】:

    猜你喜欢
    • 2013-09-19
    • 2022-07-28
    • 2015-08-29
    • 2011-08-13
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    相关资源
    最近更新 更多