كيف يمكنني أن أطلب من المتصفحات دائما تحديث (AKA أبدا ذاكرة التخزين المؤقت) عناصر صفحة معينة، مثل أوراق CSS؟

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

  •  06-09-2019
  •  | 
  •  

سؤال

لقد لاحظت مشكلة أثناء تطوير صفحاتي التي أزعجني دائما: بينما يقوم Firefox (مستعرض "DEV" الخاص بي ") دائما بتحديث CSS والصور عندما يتغيرون على الخادم، فإن Internet Explorer لا يفعل ذلك دائما. عادة، أحتاج إلى تحديث الصفحة في IE قبل أن يطلب من الخادم عن الإصدارات المحدثة من الأشياء.

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

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

أي نصيحة سيكون موضع تقدير كبير. تقوم الصفحة نفسها بتحديثات بدون عقبة (ISH)، لذلك سيناريو أسوأ حالة يمكنني فقط بصق CSS و JavaScript في الصفحة نفسها، ولكن هذا حقا حقا قبيح وبالطبع أحاول تجنبها بأي ثمن.

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

المحلول

إنها ممارسات جيدة تصميم موقعك بحيث يحتاج العميل فقط إلى جلب جافا سكريبت و CSS مرة واحدة.

إعداد موارد خارجية تنتهي صلاحيتها سنة واحدة في المستقبل. إلحاق رقم الإصدار إلى كل اسم ملف، لذلك بدلا من "style.css"، استعمال "style-1.2.4.css"ثم عندما تريد تحديث CSS العميل، قم بزيادة رقم الإصدار.

زيادة رقم الإصدار يفرض العميل لتنزيل الملف المحدث لأنه ينظر إليه كمورد منفصل تماما.

نصائح أخرى

إضافة سلسلة الاستعلام العشوائية قليلا في نهاية جميع عناوين URL. انها قبيحة ولكنها تعمل عند التطوير. علي سبيل المثال:

<link rel="stylesheet" type="text/css" href="/mycss.css?foo=<?php echo rand(); ?>"/>

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

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

بدلا من تعديل كيفية عمل مواقعي، قمت ببساطة بتطوير عادة تطهير ذاكرة التخزين المؤقت الخاصة بي قبل تحديثها أثناء التطوير. في فايرفوكس، كما قلت، هذا ليس عادة مشكلة، ولكن إذا كنت بحاجة إلى أن أكون متأكدا حقا، فأنا أستخدم SHIFT + CTRL + DEL، أدخل (واجتياز إعدادات بيانات البيانات الخاصة واضحة لا تترك فقط "ذاكرة التخزين المؤقت" فحصها.) وعلى IE ، هناك التحول القديم + F5.

بالطبع، كما ذكر الآخرون، يمكن لسلسلة الاستعلام العشوائية على ملفاتك المتقلبة أن توفر لك بعض المفاتيح. لكن منهم أن هذا هو في الواقع لمجرد راحتك وليس ضروريا حقا لموقع الإنتاج.

من الأفضل أن تضع الطابع الزمني الأخير للوقت في نهاية المصدر - بهذه الطريقة، سيكون من المؤكد أنه لن يكون هناك أي أخطاء ذاكرة التخزين المؤقت.

انها مجرد غبية لإزالة ذاكرة التخزين المؤقت تماما نظرا لأنها ستؤدي إلى صفحات أبطأ.

إذا كنت تستخدم Apache، في .htaccess لملف CSS الخاص بك:

<FilesMatch "mycssfile\.css$">
  Header set Cache-Control: "private, pre-check=0, post-check=0, max-age=0"
  Header set Expires: 0
  Header set Pragma: no-cache
</FilesMatch>

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

أنا أتطور مع سفاري التي لديها طور -> تعطيل مخابئ القائمة للضبط هذا السبب. أنا متأكد من أن فايرفوكس لديه شيء مماثل.

يمكنني استخدام تطور طفيف على طريقة Danherbert. أميل إلى استخدام نفس الأسماء لأرقام الأرقام، لكنني أرق رقم إصدار في سلسلة الاستعلام بحيث يرى المتصفح الملفات مختلفة كلما اختار المرء زيادة الإصدار. ما زالت الأمور ستحصل مؤقتا، ولكن يمكنك إبطالها في اختيارك.

إنه منظفا بعض الشيء من تغيير أسماء الملفات ويقرض نفسه على كونه حلا مدار مركزي، خاصة في التطبيقات المعقدة مع الكثير من البرامج النصية والأرقام والأوراق القادمة من الرياح الأربعة.

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