2009-06-24 3 views
12

Update: Sieht aus wie die Header-Anfrage Informationen ist der Schuldige. Wie würde ich die Max-Age-Eigenschaft des Anforderungsheaders ändern? TIA.Die Verwendung von @ font-face verlangsamt die Ladezeit. Kann ich den Client zwingen, die Schriftart zwischenzuspeichern?


Hallo, ich bin mit @ font-face auf einer Website und ich erlebe verzögerte Laden des Textes (vermutlich aufgrund der Belastung der Schrift jeder Seite). Ich verstehe, dass der Client die Schriftart einmal herunterladen muss, um richtig anzuzeigen, aber jede Seite?

Gibt es eine Möglichkeit, kann ich den Browser zwingen, diese Datei zwischenzuspeichern? Oder gibt es eine andere Alternative, um die Ladezeit der Schriftart zu beschleunigen? (Ist das eine Frage besser geeignet, auf Server Fault zu posten?)

Vielen Dank im Voraus. Im schlimmsten Fall, werde ich mit der Verzögerung leben, also ich brauche keine "take off @ font-face" Antworten ...;)

Weitere Informationen:

  • Ich habe getestet in Safari (4) und Firefox (3.5RC1) auf Mac und Windows (XP und 7)
  • Alle Browser, die ich getestet habe, sind derzeit so eingerichtet, Caching (es ist standardmäßig aktiviert)
  • Die URL ist nicht dynamisch, es ist einfach "/ Schriftarten /font.otf“
  • Die Schriftart URL korrekt ist, wie die Seite der Schriften lädt und zeigt es richtig, wenn auch langsamer als normal
  • Request-Header:

    Cache-Control: max-age = 0
    If-Modified-Since: Mi 24. Juni 2009 03.46.28 GMT
    If-None-Match: W/"484d9f2-a5ac-46d10ff2ebcc0"
    Referer: http://testurl.com/
    User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6; en-us) AppleWebKit/530,13 (KHTML, wie Gecko) Version/4.0 Safari/530,15

  • Response-Header:

    Connection: Keep-Alive-
    Datum: Do, 25. Juni 2009 02.21.31
    GMT Etag: "484d9f2-a5ac-46d10ff2ebcc0"
    Keep-Alive: timeout = 10, max = 29
    Server: Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635

+1

Können Sie die aktuellen Header, die für eine Anfrage für die Schriftart gesendet wurden, posten? –

+0

Danke für die Frage Matt, ich habe es hinzugefügt. Sieht aus wie das Max-Alter ist, was es macht. Wie würde ich das auf eine längere Dauer ändern? – mclaughlinj

+0

Was ist mit den RESPONSE-Headern? Diese sind genauso relevant, wenn nicht mehr. – SpliFF

Antwort

2

Sind Sie sicher, dass Ihre Schriftartdateien im Cache gespeichert werden können? Genau wie andere statische Inhalte sollten sie Datumsangaben in der Zukunft haben und ihre Header sollten so konfiguriert sein, dass sie zwischengespeichert werden können. Wenn Sie Ihre Zeichensätze in einer Serverfarm hosten, sollten Sie sicherstellen, dass Ihr Etag-Header auf allen Servern in der Farm normalisiert ist ... andernfalls können nachfolgende Anforderungen für die Schriftart das erneute Herunterladen von einem alternativen Server erzwingen obwohl die gleichen Daten bereits von einem anderen Server heruntergeladen wurden.

+0

Toller Kommentar, aber das passiert nicht, da ich die Datei nicht auf einer Serverfarm hostrete. Wie für die Header der Datei, ja, sie sind so konfiguriert, Caching zu ermöglichen, ich versuche, "Caching" zu erzwingen (wie die Datei nie ändern wird). – mclaughlinj

+0

Zusätzlich zum Caching sollten Sie sicherstellen, dass Sie ein Ablaufdatum für die Zukunft haben. Ziemlich oft werde ich das Caching bei einem Stück statischem Inhalt aktivieren, aber ich werde es nicht für ein in der Zukunft liegendes Ablaufdatum geben ... und es wird sich weigern, zwischenzuspeichern (FireFox ist der beste Test dafür, da es übermäßig wählerisch ist mit genau den richtigen Headern, um etwas zwischenzuspeichern ... Opera ist FAR nachsichtiger, und IE ist unberechenbar.) – jrista

+0

Ich werde mich darum kümmern und sicherstellen, dass ich sie richtig eingestellt habe. Danke für das Heads-up! – mclaughlinj

4

Sie können einen Browser nie zwingen, etwas zwischenzuspeichern, nur fördern Sie es.Ich kann mir keinen Grund denken, warum eine Font-Datei mit der richtigen Header abläuft würde nicht im Cache gespeichert werden, das bringt uns zu:

  • Es ist ein Browser-Bug (Sie sagen nicht die Browser)
  • Ihre Cache-Steuerung Header fehlen oder falsch
  • Ihr Browser konfiguriert ist alles (do Bilder Cache?) nicht cachen
  • Ihre Schrift URL ist dynamisch, so der Browser jede Anforderung denkt für eine andere Ressource ist
  • die Schriftart-Datei tatsächlich ist fehlt oder oder die URL falsch geschrieben.
  • Die Verzögerung durch die Schriftart nicht verursacht wird (Sie Sie vermuten, sagte das ist das Problem)

Ich glaube, mehr Informationen in Ordnung ist.

EDIT: Um Cache-Kontrolle einstellen ist ein Server und sprachspezifische Sache. Informationen zum Zwischenspeichern in Apache finden Sie unter mod_expires.

+0

Danke für Ihre Antwort, ich habe den Beitrag aktualisiert, um einige Ihrer Punkte zu reflektieren. Ich werde auch die Header-Informationen des Cache-Steuerelements genauer betrachten, um sicherzustellen, dass ich dort keinen Fehler gemacht habe. Der Grund, warum ich vermute, dass es ein Download-Problem ist, wenn ich die Website auf meinem lokalen Server (wo Download-Geschwindigkeiten sind offensichtlich neben Null) die spezielle Schriftart lädt in normaler Zeit (das gleiche wie normaler Text). – mclaughlinj