html預加載之link標籤

咱們以前說起過link rel 裏面有preload和prefetch、modulepreload,都是用於預加載資源web

<link rel="preload" href="..." as="...">
<link rel="modulepreload" href="...">
<link rel="prefetch" href="...">

注意preload須要寫上正確的as屬性,才能正常工做喔(prefetch不須要)。跨域

1. 可是preload和prefetch有什麼區別呢?瀏覽器

咱們翻看w3c的preload規範,裏面有說起:cookie

大體意思就是:ide

  preload是用於預加載當前頁的資源,瀏覽器會優先加載它們fetch

  prefetch是用於預加載後續導航使用的資源,瀏覽器也會加載它們,但優先級不高google

補充:spa

值得注意的是preload的as若是是video,如今瀏覽器仍是沒有支持,能夠改用as=「fetch」替代 或者 video自己的preload="auto"屬性代替3d

<!-- video的preload -->
<video src="..." controls="controls" preload="auto"></video>

<!-- link的preload,as不要寫video,由於瀏覽器尚未支持 -->
<link rel="preload" as="fetch" href="...">
<video src="..." controls="controls"></video>

 2. modulepreload和preloadcode

既然有了preload,爲何還有新增一個modulepreload呢?

咱們看到developers.google.com有一篇文章專門介紹modulepreload,裏面有一段專門的解釋:

大概意思是說,使用link preload來預加載JavaScript Module會有2個問題:

1. 預加載若是是跨域並須要開啓credentials模式(跨域帶cookies),會遇到一些麻煩(具體什麼麻煩,沒太看懂😭)

2. preload沒有屬性能夠提供來辨別這個js資源是一個JavaScript Module,這讓瀏覽器沒辦法預加載完後立刻處理成JavaScript Module來備用,只能等到調用的時候再處理

modulepreload更多詳情:查看

相關文章
相關標籤/搜索