net::ERR_CACHE_WRITE_FAILURE

公司的一个url2pdf的node服务中,使用到了puppeteer,当使用puppeteer创建浏览器并page.goto到要生成的HTML页面时,page.on(‘requestfailed’)会捕捉到异常错误:

1
2
3
4
5
page.on('requestfailed', (request) => {
logger.warn(request.failure().errorText);
})
# logger打印:
net::ERR_CACHE_WRITE_FAILURE # 缓存写入失败

此时page.goto只会得到一个空白的没任何内容HTML页面,而导致此错误的原因是Link Prefetch


· 什么是链接预取

链接预取是一种浏览器机制,其利用浏览器空闲时间来下载或预取用户在不久的将来可能访问的文档。网页向浏览器提供一组预取提示,并在浏览器完成当前页面的加载后开始静默地拉取指定的文档并将其存储在缓存中。当用户访问其中一个预取文档时,便可以快速的从浏览器缓存中得到。

· 预取是否使用HTTPS?

从 Gecko 1.9.1 (Firefox 3.5) 开始,支持获取 https 内容

· 什么是预取提示?

浏览器会查找关系类型(rel)为 next 或 prefetch 的 HTML 或 HTTP Link: header。下面是一个使用 link 标签的例子:

1
<link rel="prefetch" href="/images/big.jpeg">

同样效果的使用 HTTP Link: header 的例子:

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

Link: header 也可以通过使用 HTML meta 标签定义在 HTML 文档中:

1
<meta http-equiv="Link" content="</images/big.jpeg>; rel=prefetch">

注意: 不要预取大量的资源,否则您的浏览器就会报net::ERR_CACHE_WRITE_FAILURE错误,所以在开发的过程中,不要大量的预取资源

本文参考文章:

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×