2011-02-26 42 views
14

TypeFront üzerinde barındırılan bir fontu gömmek için @ font-face kullanıyorum ancak fontum tarayıcı tarafından önbelleklenmiyor (Firefox 3.6.13 ve Epiphany 2.30.2). Bu, Firefox ve MFOMT (Kaybolan Metinin Anlık Flash'ı, bir tanesini hazırladım) sayfasında FOUC (her defasında bir tane hazırladım) üzerinde FOUC/MFOMT ile ilk defa yüklendiğimde Epiphany'de bir FOUC/MFOMT'a neden oluyor sayfa yüklenir, ancak her zaman değil).font font fontlarını önbelleğe alma

Mümkünse yazı tipini CSS'de Base64'e gömmek zorunda kalmaya çalışıyorum ve yazı tipini kendime ev sahipliği yapamıyorum.

Yazı tipi neden önbelleğe alınmıyor? Bu sorunu olmayan herhangi bir alternatif ücretsiz yazı barındırma hizmeti var mı?

Test sayfası:

<!DOCTYPE html> 
<html> 
    <head> 
     <title>TypeFront Cache Test</title> 
     <style> 
      @font-face { 
       font-family: "Journal"; 
       src: url("http://typefront.com/fonts/825588825.ttf") format("truetype"); 
      } 
      h1 { 
       font-family: "Journal"; 
      } 
     </style> 
    </head> 
    <body> 
     <h1>Test text</h1> 
    </body> 
</html> 

Ben Firebug gözlemlerseniz, net sekme yazı yerine "304 Not değiştirme" ya da diğer endikasyonlar, "200 OK" Her zaman sayfa yüklendiğinde ile servis edildiğini gösterir Önbelleğe alınmış bir yazı tipinin kullanılmakta olduğu (ör. tarayıcı, bir HTTP isteğini bile denememektedir).

HTTP üst:

Response Headers 

HTTP/1.1 200 OK 
Server: nginx 
Date: Sat, 26 Feb 2011 12:57:18 GMT 
Content-Type: font/ttf 
Transfer-Encoding: chunked 
Connection: keep-alive 
Vary: Accept-Encoding 
Status: 200 OK 
Content-Transfer-Encoding: binary 
Access-Control-Allow-Origin: * 
Content-Disposition: attachment; filename="typefront_735a460727.ttf" 
Cache-Control: max-age=31536000 
Expires: Sun, 26 Feb 2012 12:57:18 GMT 
Content-Encoding: gzip 

Request Headers 

GET /fonts/825588825.ttf HTTP/1.1 
Host: typefront.com 
User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 115 
Connection: keep-alive 
Origin: null 
+0

İstekte if değiştirilmiş bir başlık yok, bu nedenle sunucu "değiştirilmedi" seçeneğini belirleme seçeneğine sahip değil. Sorun müşteri ile: Gelecekte bir Expires başlığı bulunduğundan neden bir istek gönderiyor? Neden no-değiştirilmiş-üstbilgi ve/veya Hayır-Yok-Eşleştirme üstbilgisi neden yok? Tamam, bu açıklanabilir, yanıtta bir etag yoktur, bu yüzden zaman damgası temellidir, ancak bu yeterli olmalı ve son değiştirilme yok, bu nedenle de değiştirilmiş olsun. Fakat yine de, (uzak) geleceğin sona ermesi, herhangi bir (ikinci) talebin yine de gerçekleşmesini engellemelidir. –

+0

Ayrıca, Firefox'ta da MFOMT var, ancak fark ettiğim gibi, Firebug'un aktif olması nedeniyle. Hayır Firebug => yazı tiplerinde 304 (yerel olarak teslim edilir). – Claudio

cevap

3

GÜNCELLEME Kasım-2016: Mercan içerik dağıtım ağı, aşağıda açıklanan operasyonda artık.


Bu oldukça genel bir "çözümdür". Yıllardır faaliyet gösteren, kamuya açık bir üretim hizmeti var (ticari kullanım şartlarını kontrol etse de, uygun olup olmadığını bilmiyorum). Bir içerik dağıtım ağında ABD federal finanse edilen bir araştırma projesidir. Bu Coral denilen ve örnek

http://www.example.com/static/MyFont.ttf 

için, .nyud.netherhangi URL'yi ekleyerek çalışır

yapacak başka bir şey yok

http://www.example.com.nyud.net/static/MyFont.ttf. 

olur. İlk istekte, Coral sunucuları dosyayı getirir ve önbelleğe alır (biraz gecikme bekler) ve daha sonra tekrar kontrol etmeden hizmet verirler (yalnızca yeni sürümler için seyrek olarak kontrol ederler).

Gelişmiş bir DNS uzantısı, DNAME kayıtlarını kullanıyor, dolayısıyla çok eski işletim sistemlerinde veya DNS çözümleyicileriyle çalışmayabilir, ancak son zamanlarda çalıştığı bilinen bir şey biliniyor. Bu şekilde, istekler coğrafi olarak yakın bir sunucuya yönlendirilir.

+0

Bu artık geçerli bir cevap değildir. – naspinski

+1

coralcdn.org hala çevrimiçi görünüyor, ancak gerçek, hizmet artık çalışmıyor gibi görünüyor, teşekkürler için –