2011-02-26 12 views
14

मैं टाइपफ्रंट पर होस्ट किए गए फ़ॉन्ट को एम्बेड करने के लिए @ फ़ॉन्ट-फेस का उपयोग कर रहा हूं, लेकिन मेरा फ़ॉन्ट ब्राउज़र द्वारा कैश नहीं किया गया है (फ़ायरफ़ॉक्स 3.6.13 और एपिफेनी 2.30.2)। यह फ़ायरफ़ॉक्स और एमएफओएमटी पर एक एफओयूसी (अनस्टील्ड कंटेंट का फ्लैश) उत्पन्न कर रहा है (लापता पाठ की क्षणिक फ्लैश, मैंने इसे अभी तक बनाया है) प्रत्येक बार पेज लोड होने पर एपिफेनी पर (मैं पहली बार एक एफओयूसी/एमएफओएमटी के साथ ठीक हूं पृष्ठ लोड होता है, लेकिन हर बार नहीं)।कैशिंग फ़ॉन्ट-फेस फ़ॉन्ट्स

यदि संभव हो तो मैं बेस 64 में सीएसएस में फ़ॉन्ट एम्बेड करने से बचने की कोशिश कर रहा हूं और मैं स्वयं फ़ॉन्ट को होस्ट नहीं कर सकता।

फ़ॉन्ट कैश नहीं किया गया है? क्या कोई वैकल्पिक मुफ्त फ़ॉन्ट होस्टिंग सेवा है जिसमें यह समस्या नहीं है?

टेस्ट पेज:

<!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> 

अगर मैं Firebug में निरीक्षण, नेट टैब पता चलता है कि फ़ॉन्ट के बजाय "304 संशोधित नहीं" या अन्य संकेत, "200 ठीक" हर बार पृष्ठ लोड के साथ परोसा जाता है कि एक कैश किए गए फ़ॉन्ट का उपयोग किया जा रहा है (उदाहरण के लिए ब्राउजर HTTP अनुरोध का प्रयास भी नहीं कर रहा है)।

HTTP हेडर:

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

अनुरोध में हेडर के बाद से कोई संशोधित नहीं है, इसलिए सर्वर के पास "संशोधित नहीं" कहने का विकल्प नहीं है। मुद्दा क्लाइंट के साथ है: भविष्य में एक एक्सपियर हेडर होने के बाद से यह एक अनुरोध क्यों भेजता है? क्यों नहीं, संशोधित-हेडर के बाद से, और/या नहीं if-None-Match हेडर? ठीक है, इसे समझाया जा सकता है, प्रतिक्रिया में कोई एटैग नहीं है, इसलिए यह टाइमस्टैम्प आधारित है लेकिन यह पर्याप्त होना चाहिए, और कोई अंतिम-संशोधित नहीं है, इसलिए कोई भी संशोधित नहीं है। लेकिन फिर, (दूर) भविष्य में हेडर की अवधि समाप्त हो जाती है, किसी भी (दूसरे) अनुरोध को वैसे भी होने से रोकना चाहिए। –

+0

मेरे पास फ़ायरफ़ॉक्स में एमएफओएमटी भी है, लेकिन जैसा कि मैंने देखा, यह फ़ायरबग सक्रिय होने के कारण है। फ़ॉन्ट पर कोई फ़ायरबग => 304 (स्थानीय रूप से वितरित)। – Claudio

उत्तर

3

अद्यतन Nov-2016: कोरल सामग्री वितरण नेटवर्क, जिसका वर्णन नीचे नहीं रह गया है ऑपरेशन में है।


यह एक सामान्य "समाधान" है। एक उत्पादन सेवा है, जो वर्षों से परिचालन करती है, जनता के लिए खुली है (हालांकि वाणिज्यिक उपयोग के लिए अपनी शर्तों की जांच करें, मुझे नहीं पता कि यह फिट बैठता है)। यह एक सामग्री वितरण नेटवर्क में एक अमेरिकी संघीय वित्त पोषित अनुसंधान परियोजना है।

यह Coral कहा जाता है और उदाहरण

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

के लिए, जोड़कर .nyud.netके लिए किसी भी यूआरएल द्वारा काम करता है

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

हो जाता है और कुछ नहीं करने के लिए नहीं है। पहले अनुरोध पर, कोरल सर्वर फ़ाइल लाते हैं और कैश करते हैं (कुछ देरी की उम्मीद करते हैं), और फिर वे फिर से जांच किए बिना इसे सेवा देते हैं (वे केवल नए संस्करणों के लिए बार-बार जांचते हैं)।

यह एक उन्नत DNS एक्सटेंशन, DNAME रिकॉर्ड का उपयोग कर रहा है, इसलिए यह बहुत पुराने ऑपरेटिंग सिस्टम या DNS रिज़ॉल्यूवर के साथ काम नहीं कर सकता है, हालांकि कुछ भी उचित रूप से काम करने के लिए जाना जाता है। इस तरह, अनुरोध भौगोलिक दृष्टि से बंद सर्वर पर रूट किए जाते हैं।

+0

यह अब एक वैध उत्तर नहीं है। – naspinski

+1

coralcdn.org अभी भी ऑनलाइन प्रतीत होता है, लेकिन सच है, सेवा अब काम नहीं कर रही है, हेड-अप के लिए धन्यवाद –

संबंधित मुद्दे