如何在Connect / Express静态中间件中完全阻止HTTP 304响应?

时间:2013-02-01 07:02:01

标签: node.js node.js-connect

有时在开发过程中,阻止HTTP 304响应(支持200的)会非常好,并导致Connect/Express static middleware读取文件系统的每个响应,而不是做任何缓存。

我尝试使用maxAge值为0和1,但无济于事:

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

4 个答案:

答案 0 :(得分:19)

我在开发期间通过这样做得到200个回复:

var express = require('express');
app = express();
app.use(function(req, res, next) {
  req.headers['if-none-match'] = 'no-match-for-this';
  next();    
});

答案 1 :(得分:8)

app.disable('etag');

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

答案 2 :(得分:5)

它确实从每个响应的文件系统中读取。只是如果请求ETAG与响应ETAG匹配,它就不会发送响应的主体,因为它不需要。它是具有相同散列的相同文件。这就是304响应的工作原理。

为什么要阻止304回复?

答案 3 :(得分:0)

此解决方案只是一种解决方法。您可以通过disabling caching in Chrome从浏览器端解决问题。如果您需要处理Chrome之外的某些内容(例如iOS上的Safari),这对您无效。