在 Express 中删除 Etag 头

4

我搜索了很多,仍然找不到解决办法。 我正在使用默认情况下将 etag 设置为 true 的nodejsexpress,尝试了所有在网上找到的解决方案,但它仍然被设置了。例如:

res.set('etag', false);
res.removeHeader('ETag');
app.disable('etag');
app.use(express.static(__dirname + '/public'), { etag: false });

目前它已经设置好了,那么我是否遗漏了什么?因为我对node或express没有太多经验。

我的问题显然是如何禁用此标头。因为我有一个包含许多静态图像的页面(非常多),而且所有这些图像都是静态的,所以etag会引起很多阻塞,因为它发送请求来检查有效性并防止浏览器依赖cache-control,从而极大地增加了页面加载时间。

感谢您的帮助。


我遇到了同样的问题。看起来在静态中间件上禁用ETag是不起作用的。 - aleung
@aleung 我回答了我的问题,请查看,希望能对你有所帮助。 - Labib Ismaiel
2个回答

2

参考:http://expressjs.com/4x/api.html#app.set

你可以在ExpressJS 4中使用以下方法:

app.set('etag', false);

将其设置为false会完全禁用etag头,而默认设置为true

可能的选项值包括:

  • 布尔值(true、false)
  • 字符串('strong'、'weak')
  • 函数

0

这不是一个完整的答案,但我还是加上了,以防有人遇到同样的问题。

事实证明,我缺少的是浏览器在第一次加载(包括页面刷新)时强制进行缓存有效性检查,这就是为什么我一直看到etag头。

要正确测试是否删除了标头,您必须浏览到URL并检查而不是直接转到它。

我希望这可以帮助某人,因为我花了一段时间才找到它


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接