Chrome 使用link rel=“modulepreload”递归地预加载依赖项

dy1byipe  于 2023-10-14  发布在  Go
关注(0)|答案(1)|浏览(188)

我想触发递归javacript模块预加载(预加载脚本及其所有依赖/导入)。
74.谨提及:
规范实际上允许选择性地加载请求的模块,以及它的所有依赖树。浏览器不必这样做,但他们可以。https://developer.chrome.com/blog/modulepreload/#but-what-about-modules-dependencies
Chrome不会这样做--在href中指定的模块会被预加载,但它的依赖项不会。
我可以强制所有依赖项的递归预加载吗?有浏览器支持这个吗?

2eafrhcq

2eafrhcq1#

我做了测试。我在<head>中使用了link="modulepreload",用于一个有3个依赖项的模块,两个级别。然后,我在<script type="module">中导入预加载模块之前运行了同步JavaScript,这是为了在时间轴中获得一个间隙,以便能够区分预加载和常规加载。
为了实现差距,我测试了两种方法。

  1. alert()
    1.当循环运行1000 ms时
    我还运行了测试,没有导入模块,只是预加载它。
  • 结果:*
    火狐v118:

试验方法|结果--|- alert()|循环1000 ms时预加载所有依赖项|仅预加载模块而不导入|已预加载所有依赖项

Chrome v117和Safari v17.0:

试验方法|结果--|- alert()|循环1000 ms时仅预加载模块|仅预加载模块而不导入|仅预装模块
目前只有Firefox有时会预加载所有依赖项,我的猜测是这取决于它是否有时间这样做,这可以解释为什么它在忙碌运行while循环时没有预加载依赖项。

相关问题