2008-10-14 14 views
5

हमने पाया है कि फ़ायरफ़ॉक्स (कम से कम v3) और सफारी एक सीएसएस फ़ाइल से संदर्भित छवियों को ठीक से कैश नहीं करते हैं। छवियों को कैश किया जाता है, लेकिन वे कभी भी ताज़ा नहीं होते हैं, भले ही आप उन्हें सर्वर पर बदल दें। एक बार फ़ायरफ़ॉक्स में कैश में छवि हो जाने पर, यह कभी भी जांच नहीं करेगा कि यह बदल गया है या नहीं।स्टाइल शीट छवियों को फ़ायरफ़ॉक्स या सफारी द्वारा पुनः लोड नहीं किया गया है

हमारे सीएसएस फ़ाइल इस तरह दिखता है:

div#news { 
    background: #FFFFFF url(images/newsitem_background.jpg) no-repeat; 
    ... 
} 

समस्या यह है कि अगर हम अब newsitem_background.jpg छवि को बदलने, सभी फ़ायरफ़ॉक्स उपयोगकर्ताओं को अब भी पुरानी छवि मिल जाएगा, जब तक उन्हें स्पष्ट पेज को ताज़ा है। दूसरी ओर आईई, यह पता लगाता है कि छवि बदल गई है और इसे स्वचालित रूप से पुनः लोड कर देती है।

क्या यह ज्ञात समस्या है? कोई कामकाज? धन्यवाद!

संपादित करें: समाधान F5 दबाए नहीं है। मे यह कर सकती हु। लेकिन हमारे ग्राहक सिर्फ हमारी वेबसाइट पर जाएंगे, और पुरानी, ​​पुरानी ग्राफिक्स प्राप्त करेंगे। उन्हें कैसे पता चलेगा कि उन्हें F5 दबाए जाने की आवश्यकता होगी?

मैंने फ़ायरबग स्थापित किया है और पुष्टि की है कि मुझे पहले से क्या संदेह है: फ़ायरफ़ॉक्स सिर्फ एक सीएसएस फ़ाइल से संदर्भित छवियों को पुनर्प्राप्त करने का प्रयास नहीं करता है, यह पता लगाने के लिए कि क्या वे बदल गए हैं या नहीं। जब आप F5 दबाते हैं, तो यह सभी छवियों की जांच करता है, और वेब सर्वर अच्छी तरह से 304 के साथ प्रतिक्रिया देता है, में बदल गया है, जहां यह 200 ओके के साथ प्रतिक्रिया करता है।

तो, क्या फ़ायरफ़ॉक्स को स्वचालित रूप से पर एक सीएसएस फ़ाइल से संदर्भित एक छवि को अपडेट करने का कोई तरीका है? निश्चित रूप से मैं इस समस्या के साथ अकेला नहीं हूँ?

EDIT2: मैं स्थानीय होस्ट के साथ इस परीक्षण किया है, और छवि प्रतिक्रिया किसी भी कैशिंग जानकारी शामिल नहीं है, यह है:

Server Microsoft-IIS/5.1 
X-Powered-By ASP.NET 
Date Tue, 14 Oct 2008 11:01:27 GMT 
Content-Type image/jpeg 
Accept-Ranges bytes 
Last-Modified Tue, 14 Oct 2008 11:00:43 GMT 
Etag "7ab3aa1aec2dc91:9f4" 
Content-Length 61196 

EDIT3: मैं कुछ और पढ़ने किया है और ऐसा लगता है कि यह सिर्फ कर सकते हैं 'लग रहा है टी को ठीक नहीं किया जा सकता है, क्योंकि फ़ायरफ़ॉक्स, या अधिकांश ब्राउज़र, मान लेंगे कि एक छवि बहुत बार नहीं बदली है (हेडर और सभी समाप्त हो जाती है)।

उत्तर

8

मैं छवि यूआरएल में एक क्वेरीस्ट्रिंग मान जोड़ूंगा। मैं आम तौर पर सिर्फ एक "संस्करण संख्या" बना सकते हैं और यह हर बार बढ़ा देते छवि परिवर्तन:

div#news { 
    background: url(images/newsitem_background.jpg?v=00001) no-repeat; 
    ... 
} 
+0

देख हम यहाँ ही निष्कर्ष पर आए हैं। हमें छवि यूआरएल में कुछ स्ट्रिंग जोड़ने की जरूरत है। – mark

+0

उस मामले में reload –

0

जब आप पुनः लोड करें (या F5 दबाएं) क्लिक करते समय SHIFT कुंजी को पकड़ने का प्रयास करें।

अन्यथा, HTTP अनुरोध/प्रतिक्रिया शीर्षलेखों की जांच करने के लिए फ़ायरबग जैसे टूल का उपयोग करें और कैशिंग को नियंत्रित करने वाले शीर्षलेख मानों का पालन करें। मैंने कभी इस समस्या को नहीं देखा है। शायद आपका सर्वर 304 प्रतिक्रिया लौटा रहा है (संशोधित नहीं)।

+0

इस के लिए एक अस्थायी ठीक है समाधान नहीं है, संपादित सवाल –

0

मुझे पता है कि शायद यह नहीं है कि आप क्या सुनना चाहते हैं, लेकिन यह अधिक संभावना है कि फ़ायरफ़ॉक्स मानक का पालन कर रहा है और आईई थोड़ा अजीब कर रहा है (और आप बस उस पर भरोसा करते हैं;))।

कैशिंग व्यवहार इस बात पर निर्भर करता है कि आपकी छवियों के साथ कैशिंग हेडर भेजे जा रहे हैं। यदि आप हेडर पोस्ट करने की स्थिति में हैं (या छवियों में से किसी एक के लिए एक यूआरएल), तो हम आपको और अधिक विशेष रूप से बताएंगे कि क्या हो रहा है।

1

अपने HTTP शीर्षलेखों को उन छवियों पर सत्यापित करें जिन्हें आप सेवा कर रहे हैं, साथ ही साथ सीएसएस फ़ाइल भी।

यदि उनमें से कोई भी कैश (या गायब हैं) पर सेट है, तो आप पाएंगे कि ब्राउज़र सही ढंग से फ़ाइल को कैश कर रहा है।

2

इस तरह के मुद्दे से बचने के लिए, मैंने वेबमास्टर्स को अपनी फाइलों में संस्करण संख्या जोड़कर देखा है। इसलिए वे साइट-लुक -124.css और newsitem_background-7.jpg लोड करते हैं।

कोई बुरा समाधान नहीं, IMHO।

0

यह फ़ायरफ़ॉक्स जाँच नहीं करता है, तो छवि समाप्त हो गया है की समस्या का समाधान नहीं होगा, लेकिन आप क्या कर सकते सुनिश्चित करना है कि अपने ग्राहकों को देखने के सही छवि है:

एक PHP के लिए सीएसएस में छवि सेट करें या समान स्क्रिप्ट कि छवि प्रस्तुत करती है:

div#news { 
    background: #FFFFFF url(images/background.php?name=newsitem) no-repeat; 
    ... 
} 

तब छवि "

<?php 
$name = isset($_REQUEST['name']) ? $_REQUEST['name'] : false; 
switch($name) { 
    case 'newsitem': 
     $filename = 'news_item_background.jpg'; 
    break; 
    default: 
     $filename = 'common_background.jpg'; 
    break; 
} 

header("Content-Type: image/jpeg"); 
header("Content-Transfer-Encoding: binary"); 
$fp = fopen($filename , "r"); 
if ($fp) fpassthru($fp); 

मैं अपने घर सर्वर पर इसका इस्तेमाल लौटने के लिए स्क्रिप्ट का उपयोग बेतरतीब ढंग से एक पृष्ठभूमि imag वापस जाने के लिए ई मेरे कुछ पृष्ठों के लिए, और फ़ायरफ़ॉक्स इन्हें कैश नहीं लग रहा है। यदि आप चाहें तो आप छवियों के साथ कुछ फंकी स्टफ भी कर सकते हैं।

0

एक अन्य त्वरित काम के आसपास (अगर यह मुख्य रूप से वेब डिजाइन के बीच में होता है) वास्तविक सीएसएस पृष्ठ देखने के लिए है फ़ायरफ़ॉक्स में, और पृष्ठ को फिर से लोड करें, फिर जब आप वेबसाइट पर वापस आएं तो ब्राउज़र वर्तमान सीएसएस पृष्ठ पढ़ेगा।

निश्चित रूप से यह सिर्फ वेब डिजाइनर

+0

के लिए ctrl + f5 का उपयोग करें ctrl + f5 मेरे लिए सफल बनाता है, आमतौर पर –

+0

* पाठ्यक्रम की पर्याप्तताएं –

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