Wie kann ich den Browser dazu ermutigen, Bilder aus einer CSS-Datei schneller herunterzuladen?

13

Ich benutze CSS, um viele meiner Bilder (als Hintergründe für <div>) zu platzieren und stelle oft fest, dass sie auf diese Weise sehr langsam geladen werden. Sie scheinen das Letzte zu sein, was geladen werden muss. Es dauert eine Weile, bis selbst kleine Symbolbilder auf diese Weise angezeigt werden. Gibt es eine Möglichkeit, dem Browser eine Priorität für Bilder zuzuweisen? Oder soll es die Bilder in der CSS-Datei früher herunterladen und früher rendern?

Daniel Bingham
quelle
Die Antwort der CSS-Sprites auf Ihre andere Frage wird wahrscheinlich auch diese Frage beantworten.
DisgruntledGoat

Antworten:

10

CSS ist für das Styling gedacht, nicht für den Inhalt. Browser versuchen (zu Recht), Inhalte anzuzeigen, bevor sie Stile hinzufügen, weshalb Bilder in Stylesheets normalerweise zuletzt heruntergeladen werden. Wenn Bilder für Ihren Inhalt wichtig sind, fügen Sie sie über Standard-HTML- <IMG>Tags hinzu.

Dan Diplo
quelle
2
Toller Rat, besonders der letzte Satz. Bild zur Dekoration: CSS; Bilder für den Inhalt: HTML.
DisgruntledGoat
1
Daniels Beschreibung der Bilder, auf die er sich bezieht ("Hintergründe", "Symbole"), lässt sie eher wie Dekoration klingen als wie Inhalt. Ich denke, sie haben Recht, im CSS zu sein.
Bobby Jack
5

Verwenden Sie absolute URIs aus Ihrem Stylesheet und fügen Sie die Bilder aus IMG-Tags zu einem <div>auf der Seite ausgeblendeten hinzu (dies setzt voraus, dass Sie auf jeder Seite dieselben Bilder verwenden; idealerweise in der Fußzeile, damit sie bei jedem Seitenaufruf geladen und zwischengespeichert werden ).

Bilder auf der Seite erhalten Priorität und werden nach dem Zwischenspeichern der Bilder bei nachfolgenden Seitenanforderungen sofort gerendert.

danlefree
quelle
2

Für Browser, die den Daten-URI-Typ unterstützen ( Informationen finden Sie unter http://en.wikipedia.org/wiki/Data_Uri ), um das Bild in das CSS selbst aufzunehmen.

Dies hat jedoch einige Nachteile:

  • Die Daten werden neu geladen, wenn das CSS nicht separat zwischengespeichert wird, aber es sei denn, Ihr CSS ändert sich regelmäßig, ist dies kein großes Problem.
  • Die fehlende Vererbung von CSS und solche Mittel können zu Zeiten (Verschwendung von Bandbreite) führen, in denen Sie dieselbe Grafik mehrmals einschließen oder die in Ihrem Dokument verwendeten Klassen ändern müssen.
  • Die Bilder werden auf diese Weise Base64-codiert, was bedeutet, dass sie mehr Bandbreite beanspruchen (obwohl das Bandbreitenproblem viel weniger wichtig ist, wenn Sie die Daten komprimiert senden).
  • Sie müssen alternative Stile für Browser bereitstellen, die die Daten-URIs nicht unterstützen, von denen einige nicht ungewöhnlich sind (z. B. IE6 und IE7).
David Spillett
quelle
1

Derzeit kann nicht angegeben werden, welche Dateien zuerst heruntergeladen werden sollen. Zu Ihrer Information: Bilder, die in CSS-Dateien als Hintergrundbilder angegeben sind, werden wahrscheinlich zuletzt heruntergeladen, weil der Browser sie als nicht inhaltlich und daher mit niedrigerer Priorität ansieht. Verwenden Sie sie daher nicht für wichtige Bilder, die Sie schnell laden möchten.

John Conde
quelle
1

Machen Sie Ihre Bilder so klein wie möglich. Sie können smush.it verwenden , um unnötige Bytes zu entfernen.

Emily
quelle