2009-06-24 4 views
12

Mise à jour: On dirait que les informations de demande d'en-tête sont le coupable. Comment changer la propriété max-age de l'en-tête de la requête? TIA.L'utilisation de @ font-face ralentit le temps de chargement. Puis-je forcer le client à mettre en cache la police?


Salut, je suis en utilisant @ font-face sur un site Web et je rencontre le chargement retardé du texte (probablement en raison de la charge de la police chaque page). Je comprends que le client doit télécharger la police une fois pour afficher correctement, mais chaque page?

Y a-t-il un moyen de forcer le navigateur à mettre en cache ce fichier? Ou existe-t-il une autre alternative pour accélérer le temps de chargement de la police? (Est-ce une question plus approprié de poster sur Server Fault?)

Merci d'avance. Le pire des cas, je vais vivre avec le retard, donc je ne pas besoin de "Enlève @ font-face" réponses ...;)

Informations supplémentaires:

  • J'ai testé à la fois dans Safari (4) et Firefox (3.5RC1) sur Mac et Windows (XP et 7)
  • Tous les navigateurs sur lesquels j'ai testé sont actuellement configurés pour permettre la mise en cache (il est activé par défaut)
  • L'URL est pas dynamique, c'est simplement "/ polices /font.otf »
  • L'URL de la police est correcte, que la page charge la police et affiche correctement, bien que plus lent que la normale
  • tête de demande:

    Cache-Control: max-age = 0
    If-Modified-Since: Mer 24 juin 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; fr-fr) AppleWebKit/530,13 (KHTML, comme Gecko) Version/Safari 4.0/530.15

  • têtes de réponse:

    Connection: Keep-Alive
    Date: Thu, Jun 2009 02:21:31 25 GMT
    Etag: "484d9f2-a5ac-46d10ff2ebcc0"
    Keep-Alive: timeout = 10, max = 29
    serveur: 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

Pouvez-vous publier les en-têtes actuels envoyés pour une demande de police? –

+0

Merci d'avoir demandé à Matt, je l'ai ajouté. On dirait que le max-age est ce qui le fait. Comment pourrais-je changer cela pour une durée plus longue? – mclaughlinj

+0

qu'en est-il des en-têtes RESPONSE? ceux-ci sont tout aussi pertinents, sinon plus. – SpliFF

Répondre

2

Etes-vous sûr que vos fichiers de polices peuvent être mis en cache? Tout comme les autres contenus statiques, ils doivent avoir des dates d'expiration futures et leurs en-têtes doivent être configurés pour permettre leur mise en cache. Si vous hébergez vos polices sur une batterie de serveurs, vous devez vous assurer que votre en-tête etag est normalisé sur tous les serveurs de la batterie ... sinon les demandes suivantes de la police peuvent la forcer à être téléchargée depuis un autre serveur même si les mêmes données ont déjà été téléchargées à partir d'un autre serveur.

+0

Bon commentaire, cependant, ce n'est pas ce qui se passe car je n'héberge pas le fichier sur une ferme de serveurs. En ce qui concerne les en-têtes du fichier, oui, ils sont configurés pour permettre la mise en cache, j'essaye de "forcer" la mise en cache (car le fichier ne changera jamais). – mclaughlinj

+0

En plus de permettre la mise en cache, assurez-vous d'avoir une date d'expiration éloignée. Très souvent, je vais activer la mise en cache sur un contenu statique, mais je ne lui donnerai pas de date d'expiration future ... et il refusera de mettre en cache (FireFox est le meilleur test, car il est excessivement difficile avoir exactement les bons en-têtes afin de mettre en cache quelque chose ... Opera est beaucoup plus indulgent, et IE est imprévisible.) – jrista

+0

Je vais regarder à ce sujet et assurez-vous que je les ai réglé correctement. Merci pour l'information! – mclaughlinj

4

Vous ne pouvez jamais forcer un navigateur à mettre en cache quelque chose, seulement l'encourager.Je ne vois aucune raison pour laquelle un fichier de police avec le bon expire en-têtes ne seraient pas mises en cache qui nous amène à:

  • Il y a un bug de navigateur (vous ne dites pas que le navigateur)
  • Votre commande de cache les en-têtes sont manquants ou mal
  • Votre navigateur est configuré pour mettre en cache rien (ne cache images?)
  • URL de votre police est dynamique de sorte que le navigateur pense chaque demande est une autre ressource
  • le fichier visage de la police est en fait manquant ou ou l'URL mal orthographié.
  • Le retard est pas causé par le téléchargement de la police (vous avez dit que vous présumez c'est la question)

Je pense que plus d'informations est en ordre.

EDIT: Pour définir le contrôle du cache, il s'agit d'un serveur et d'un langage spécifique. Regardez mod_expires pour plus d'informations sur la mise en cache dans Apache.

+0

Merci pour votre réponse, j'ai mis à jour le post pour refléter certains de vos points. Je regarderai aussi plus en détail les informations d'en-tête de contrôle de cache pour m'assurer que je n'ai pas fait d'erreur là-bas. La raison pour laquelle je suppose que c'est un problème de téléchargement est lorsque je teste le site sur mon serveur local (où les vitesses de téléchargement sont évidemment nulles) la police spéciale se charge en temps normal (le même que le texte normal). – mclaughlinj

Questions connexes