Wie verhindere ich, dass CSS meine Website rendern kann?

8

Ich versuche, die Ladegeschwindigkeit meiner mobilen Webseite zu optimieren, und für diesen Effekt benutze ich die Webseite:

Diese Website bewertet meine Quelle und sagt mir, was ich verbessern kann. Auf meiner Website lade ich eine Schrift herunter:

%Vor%

und anscheinend blockiert dies das Rendern meiner Seite. Nun, wenn dies JavaScript wäre, könnte ich das async -Wort im Tag verwenden und es würde das Problem beheben, aber das ist keine JavaScript-Datei, die ich lade!

Besteht trotzdem die Möglichkeit, dass diese Ressource meinen Browser nicht blockiert und zwingt ihn zu warten, bis er heruntergeladen ist?

    
Flame_Phoenix 10.08.2014, 15:45
quelle

2 Antworten

11

Sie können es mit JavaScript machen:

%Vor%

Die Schriftart wird mit dem Hauptrendering out-of-band geladen. Das bedeutet natürlich, dass es eine visuelle Änderung geben wird, wenn die Schriftart geladen wird ... und wenn der Benutzer JavaScript deaktiviert hat, wird die Schriftart überhaupt nicht geladen.

Oder wie dandavis darauf hinweist, könnten Sie einfach ein style -Element am Ende von body verwenden, kurz vor dem schließenden </body> -Tag:

%Vor%

Das ist ungültiger HTML-Code, aber A) Ich habe noch nie einen Browser gefunden, der interessiert, und B) Wenn man es anschaut, sieht es so aus, als würden die Nightlies der HTML5-Spezifikation das if erlauben Sie fügen das Attribut scoped hinzu:

%Vor%

(Das Attribut scoped wurde aus der Spezifikation gezogen.)

Die Vorteile gegenüber JavaScript sind:

  1. Theoretisch kann der Prefetch-Scanner des Browsers das style -Element finden und den Download früher starten (obwohl dies nicht besonders wahrscheinlich ist, wenn Sie das JavaScript in head setzen). und

  2. Es funktioniert auch, wenn der Benutzer JavaScript deaktiviert hat.

Alternativ könnten Sie auch Ihr Element link an das Ende von body verschieben, aber das ist zur Zeit ungültig und das scoped -Attribut scheint (noch?) nicht zu gelten. (Warum sollte es auf style und nicht auf link[rel=stylesheet] angewendet werden? Ich habe keine Ahnung, und vielleicht ist es einfach eine Sache, noch nicht da zu sein ...)

    
T.J. Crowder 10.08.2014, 15:51
quelle
0
%Vor%     
ts.tsogtgerel 13.05.2017 03:22
quelle