fetchpriority în HTML

Linkuri și multimedia HTML (2022): Chrome 101, Firefox 132, Safari 17.2

Indică browserului dacă o imagine, un script sau o resursă preîncărcată trebuie descărcată cu prioritate mai mare sau mai mică.

Sintaxă tag
<img src="banner.jpg" alt="..." fetchpriority="high">
<script src="statistici.js" async fetchpriority="low"></script>

Ce face fetchpriority

Browserul dă fiecărei descărcări o prioritate: CSS-ul și scripturile din <head> sunt mari, imaginile pornesc de obicei cu prioritate mică. Atributul fetchpriority îți permite să corectezi această ordine când știi ceva ce browserul nu știe.

Cazul cel mai des întâlnit este imaginea principală din partea de sus a paginii (elementul LCP): cu fetchpriority="high" se descarcă înaintea celorlalte imagini. Invers, low se pune pe resurse care pot aștepta, cum ar fi imaginile din slide-urile ascunse ale unui carusel.

Atributul există pe <img>, <link> și <script>. Este doar un indiciu: browserul îl poate ignora. Este Baseline din octombrie 2024 (Chrome 101, Firefox 132, Safari 17.2).

Atribute

Atribut Descriere
high Prioritate mai mare decât cea obișnuită pentru tipul respectiv.
low Prioritate mai mică decât cea obișnuită.
auto Browserul decide singur (implicit).

Exemple

Exemplul 1: Imaginea principală a paginii, cu prioritate mare

Bannerul se vede primul, așa că îl descărcăm înaintea celorlalte imagini.

<img src="oferta-toamna.jpg" alt="Reduceri de toamnă: până la 30%" width="1600" height="600"
     fetchpriority="high">
<img src="produs-1.jpg" alt="Geacă de toamnă" width="400" height="400" loading="lazy">

Ce afișează browserul

În DevTools → Network, coloana Priority arată „High” pentru oferta-toamna.jpg și „Low” pentru produs-1.jpg. Bannerul apare mai repede.

Exemplul 2: Carusel: primul slide sus, celelalte jos

Slide-urile ascunse nu trebuie să concureze cu primul.

<div class="carusel">
  <img src="slide-1.jpg" alt="Colecția nouă" fetchpriority="high">
  <img src="slide-2.jpg" alt="Reduceri la încălțăminte" fetchpriority="low">
  <img src="slide-3.jpg" alt="Livrare gratuită peste 200 lei" fetchpriority="low">
</div>

Ce afișează browserul

Primul slide se descarcă primul; slide-2 și slide-3 se descarcă după ce resursele importante s-au terminat.

Exemplul 3: Script de statistici cu prioritate mică

Scriptul se descarcă după resursele care contează pentru afișare.

<script src="/js/statistici.js" async fetchpriority="low"></script>

Ce afișează browserul

În Network, statistici.js are prioritatea „Low” și nu întârzie imaginile și fonturile paginii.

Greșeli frecvente

  • fetchpriority="high" pe multe imagini: dacă toate sunt importante, niciuna nu mai este. Folosește-l pe una sau două.
  • fetchpriority="high" împreună cu loading="lazy" pe aceeași imagine: cele două se contrazic, iar imaginea tot așteaptă să fie aproape de ecran.
  • Așteptarea unui efect mare în browserele vechi: acolo atributul este ignorat, fără erori.

Comenzi înrudite

  • loading=lazy: Amână descărcarea imaginilor și a cadrelor iframe până când utilizatorul derulează aproape de ele.
  • <link rel=preload>: Cere browserului să descarce devreme o resursă de care pagina are sigur nevoie curând: font, imagine principală, script sau CSS.
  • <img>: Inserează o imagine în pagină; element vid cu atribute obligatorii src (calea) și alt (textul alternativ).
  • <script>: Încarcă sau conține cod executabil JavaScript pentru a adăuga interactivitate paginii.