मैं टाइपफ्रंट पर होस्ट किए गए फ़ॉन्ट को एम्बेड करने के लिए @ फ़ॉन्ट-फेस का उपयोग कर रहा हूं, लेकिन मेरा फ़ॉन्ट ब्राउज़र द्वारा कैश नहीं किया गया है (फ़ायरफ़ॉक्स 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
अनुरोध में हेडर के बाद से कोई संशोधित नहीं है, इसलिए सर्वर के पास "संशोधित नहीं" कहने का विकल्प नहीं है। मुद्दा क्लाइंट के साथ है: भविष्य में एक एक्सपियर हेडर होने के बाद से यह एक अनुरोध क्यों भेजता है? क्यों नहीं, संशोधित-हेडर के बाद से, और/या नहीं if-None-Match हेडर? ठीक है, इसे समझाया जा सकता है, प्रतिक्रिया में कोई एटैग नहीं है, इसलिए यह टाइमस्टैम्प आधारित है लेकिन यह पर्याप्त होना चाहिए, और कोई अंतिम-संशोधित नहीं है, इसलिए कोई भी संशोधित नहीं है। लेकिन फिर, (दूर) भविष्य में हेडर की अवधि समाप्त हो जाती है, किसी भी (दूसरे) अनुरोध को वैसे भी होने से रोकना चाहिए। –
मेरे पास फ़ायरफ़ॉक्स में एमएफओएमटी भी है, लेकिन जैसा कि मैंने देखा, यह फ़ायरबग सक्रिय होने के कारण है। फ़ॉन्ट पर कोई फ़ायरबग => 304 (स्थानीय रूप से वितरित)। – Claudio