لا يتم إعادة تحميل الصور رقة الأنماط فايرفوكس أو سفاري

StackOverflow https://stackoverflow.com/questions/200470

  •  03-07-2019
  •  | 
  •  

سؤال

ولقد تبين أن فايرفوكس (على الأقل V3) وسفاري لا صور مخبأ بشكل صحيح المشار إليها من ملف المغلق. يتم مؤقتا الصور، لكنها استرجعت أبدا، حتى لو كنت تغييرها على الخادم. مرة واحدة فايرفوكس لديه صورة في ذاكرة التخزين المؤقت، وسوف تحقق أبدا إذا كان قد تغير.

وملف المغلق لدينا يبدو مثل هذا:

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

والمشكلة هي أنه إذا كنا الآن تغيير صورة newsitem_background.jpg، فإن جميع مستخدمي فايرفوكس لا يزال الحصول على الصورة القديمة، إلا إذا كانوا تحديث صراحة الصفحة. IE من ناحية أخرى، كشف أن الصورة قد تغيرت وتعيد تحميل تلقائيا.

هل هذه مشكلة معروفة؟ أي الحلول؟ شكرا!

وتحرير: الحل ليس للضغط F5. أستطيع أن أفعل ذلك. لكن عملائنا سوف مجرد زيارة موقعنا على شبكة الإنترنت، والحصول على القديم، والرسومات التي عفا عليها الزمن. كيف أنهم يعرفون أنهم في حاجة للضغط F5؟

ولقد ركبت الحرائق وأكد ما كنت أظن بالفعل: فايرفوكس فقط لا بل محاولة لاسترداد الصور المشار إليها من ملف المغلق، لمعرفة ما إذا كان قد تم تغييرها. عند الضغط على F5، فإنه لا تحقق من كل الصور، وخادم الويب يستجيب بشكل جيد مع 304، باستثناء تلك التي <م> هل لديك تغير، حيث يستجيب مع 200 OK.

وهكذا، ليس هناك وسيلة لحث فايرفوكس ل<م> تلقائيا تحديث النسخة المشار إليها من ملف المغلق؟ بالتأكيد لست الوحيد مع هذه المشكلة؟

و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: لقد فعلت بعض مزيد من القراءة ويبدو أنه لا يمكن أن تكون ثابتة، منذ فايرفوكس، أو معظم المتصفح، وسوف نفترض مجرد صورة لا تغيير في كثير من الأحيان (تنتهي في رأس وجميع) <. / P>

هل كانت مفيدة؟

المحلول

وأود فقط إضافة قيمة سلسلة استعلام مواقع المعلومات إلى رابط الصورة. أنا عادة مجرد خلق "رقم الإصدار" وزيادة في كل مرة تتغير الصورة:

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

نصائح أخرى

لتجنب مثل هذه القضية، لقد رأيت أصحاب المواقع مضيفا <القوي> رقم الإصدار لملفاتهم. لذلك هم تحميل site-look-124.css وnewsitem_background-7.jpg.

وليس حلا سيئا، IMHO.

والتحقق من رؤوس HTTP الخاص بك على الصور التي يتم تخدم ما يصل، فضلا عن ملف CSS (ق).

إذا يتم تعيين أي منهم إلى ذاكرة التخزين المؤقت (أو مفقود)، وسوف تجد في المتصفح التخزين المؤقت لملف (ق) بشكل صحيح.

وأعرف أن هذا ربما هو ليس ما تريد أن تسمعه، ولكنه إلى حد كبير من المرجح أن فايرفوكس يتابع مستوى وIE يفعل شيئا غريبا قليلا (وكنت يحدث لمجرد أن تعتمد عليه؛).)

ويعتمد سلوك التخزين المؤقت على ما رؤوس التخزين المؤقت يتم إرسالها مع الصور الخاصة بك. إذا كنت في وضع يمكنها من الرد على الرؤوس (أو URL إلى واحدة من الصور)، ثم أننا سوف تكون قادرة على ان اقول لكم بشكل أكثر تحديدا ما يجري.

وهذا لن يحل المشكلة من فايرفوكس عدم التحقق إذا انتهت صلاحية الصورة، ولكن ما يمكنك القيام به لضمان أن العملاء رؤية الصورة الصحيحة هي:

وتعيين الصورة في المغلق إلى 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);

وأنا استخدامها على خادم منزلي للعودة بشكل عشوائي صورة خلفية لبعض من صفحاتي، وفايرفوكس لا يبدو إلى ذاكرة التخزين المؤقت هذه. يمكنك أيضا القيام ببعض stuph غير تقليدي مع الصور إذا أردت.

واحد الآخر سريعة عمل حول (إذا كان هذا يحدث بشكل رئيسي في منتصف تصميم المواقع) هو لعرض الصفحة المغلق الفعلية في فايرفوكس، وإعادة تحميل الصفحة، ثم عند العودة إلى الموقع سيقوم المتصفح قراءة المغلق الحالي الصفحة.

وطبعا هذا هو الإصلاح مؤقت فقط للمصمم على شبكة الإنترنت

وحاول الضغط على مفتاح SHIFT أثناء النقر فوق تحديث (أو اضغط على المفتاح F5 ).

وإلا، استخدم أداة مثل الحرائق للتحقق من طلب HTTP / رؤوس استجابة ومراعاة القيم التي تتحكم في رأس التخزين المؤقت. لم يسبق لي ان لاحظت هذه المشكلة. ربما الخادم الخاص بك بإرجاع استجابة 304 (غير معدلة).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top