如何在 Express 4 中正确设置链接预取标头?

Posted

技术标签:

【中文标题】如何在 Express 4 中正确设置链接预取标头?【英文标题】:How do I properly set link prefetch headers in Express 4? 【发布时间】:2015-09-06 17:23:54 【问题描述】:

根据MDN,正确的做法是发送header:

Link: </images/big.jpeg>; rel=prefetch

所以我的表达语法是:

res.header('Link', '</images/big.jpeg>; rel=prefetch');

我看到它在我的浏览器中显示为:

Link:</images/big.jpeg>; rel=prefetch

但 chrome 从不尝试下载图像。元和链接方法工作正常。

是我设置的标头错误还是浏览器无法处理标头值?

UDPATE:好的,看起来我做的不错,但 Linux/Ubuntu 上的 Chrome 43 和 Chromium 43 尚不支持此功能。这在 Firefox 38 中运行良好..

难道 Chromium 只是没有在“网络”选项卡中显示预取?

更新 2:因此看起来 Chrome/Chromium 正在从“网络”选项卡中隐藏文件传输。如果有人能证实这一点,我将不胜感激..

【问题讨论】:

【参考方案1】:

在 Express 4+ 中为一个文件设置预取..

res.set('Link', '<static/js/file1.js>; rel=prefetch');

对于多个文件。

res.set('Link', '<static/js/file1.js>; rel=prefetch, <static/js/file2.js>; rel=prefetch');

请勿尝试在 Chrome 中进行测试,如果您在“网络”选项卡下进行调查,Chrome 会欺骗您并显示它无法正常工作。始终使用Firefox 进行测试。

You can see me implementing this in a larger project in context here.

【讨论】:

当文件有动态哈希时,我们如何添加预取或预加载,例如:styles.b2d783724150de9a2373.css

以上是关于如何在 Express 4 中正确设置链接预取标头?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Vue CLI 4.3 默认禁用链接(异步模块)预取/预加载?

Express 服务器不回复正确的 cors 标头

Express.js:为 webpack 中捆绑的静态资产设置缓存控制标头

ERR_HTTP_HEADERS_SENT - Express:标头在发送到客户端后无法设置,我该如何解决这个错误?

在nodejs中发送标头后无法设置标头

如何使用 Express 和 Apollo-Server 获取 HTTP 授权标头