Priorytetyzacja zasobów za pomocą linku rel='preload'

Czy kiedykolwiek chciałeś/chciałyś poinformować przeglądarkę o ważnym czcionce, skrypcie lub innym zasobie, którego potrzebuje strona, bez opóźniania zdarzenia onload strony? <link rel="preload"> daje twórcom stron internetowych możliwość tworzenia takich elementów za pomocą znanej składni elementu HTML z kilkoma kluczowymi atrybutami, które określają ich działanie. Jest to standard w postaci projektu, który jest dostarczany w ramach wersji Chrome 50.

Zasoby wczytywane za pomocą <link rel="preload"> są przechowywane lokalnie w przeglądarce i są nieaktywne, dopóki nie zostaną wywołane w DOM, JavaScript lub CSS. Oto przykład zastosowania, w którym plik skryptu jest wstępnie wczytany, ale nie jest wykonywany natychmiast, jak to by było w przypadku, gdyby został uwzględniony w tagu <script> w DOM.

<link rel="preload" href="used-later.js" as="script">
<!-- ...other HTML... -->
<script>
    // Later on, after some condition has been met, we run the preloaded
    // JavaScript by inserting a <script> tag into the DOM.
    var usedLaterScript = document.createElement('script');
    usedLaterScript.src = 'used-later.js';  
    document.body.appendChild(usedLaterScript)
</script>

Co się tutaj dzieje? Atrybut href użyty w tym przykładzie powinien być znany deweloperom stron internetowych, ponieważ jest to standardowy atrybut używany do określania adresu URL dowolnego połączonego zasobu.

Atrybut as jest prawdopodobnie nowością, ale jest używany w kontekście elementu <link>, aby przekazać przeglądarce więcej informacji o miejscu docelowym żądania wstępnego wczytywania. Te dodatkowe informacje sprawiają, że przeglądarka ustawia odpowiednie nagłówki żądania, priorytet żądania, a także stosuje odpowiednie dyrektywy Zasad bezpieczeństwa treści, które mogą być stosowane w ramach odpowiedniego kontekstu zasobu.

Dowiedz się więcej

Yoav Weiss napisał pełny przewodnik po <link rel="preload">. Jeśli chcesz zacząć używać tej funkcji na swoich stronach, przeczytaj ten artykuł, aby dowiedzieć się więcej o jej zaletach i możliwościach kreatywnych.

<link rel="preload"> zastępuje <link rel="subresource">, który zawierał poważne błędy i wady oraz nigdy nie został wdrożony w przeglądarkach innych niż Chrome. W związku z tym Chrome 50 nie obsługuje <link rel="subresource">.