16

有时在开发过程中,阻止 HTTP 304 响应(有利于 200 响应)并导致Connect/Express 静态中间件从文件系统读取每个响应,而不是进行任何缓存,这将是非常好的。

我尝试过使用maxAge0 和 1 的值,但无济于事:

app.use(express.static(__dirname + '/public', { maxAge: 1 }))
4

4 回答 4

20

通过在开发过程中执行此操作,我得到了 200 条回复:

var express = require('express');
app = express();
app.use(function(req, res, next) {
  req.headers['if-none-match'] = 'no-match-for-this';
  next();    
});
于 2013-10-03T20:32:23.263 回答
8
app.disable('etag');

防止“etag”响应可能会有所帮助

于 2014-03-16T06:20:51.330 回答
6

它会在每次响应时从文件系统中读取。只是如果请求 ETAG 与响应 ETAG 匹配,它不会发送响应的正文,因为它不必发送。它是具有相同哈希的相同文件。这就是 304 响应的工作原理。

为什么要阻止 304 响应?

于 2013-02-13T00:59:27.280 回答
0

此解决方案只是一种解决方法。您可以通过在 Chrome 中禁用缓存来从浏览器端解决问题。如果您需要在 Chrome 以外的地方工作,例如 iOS 上的 Safari,这对您没有帮助。

于 2013-02-01T07:02:00.703 回答