ما الذي قد يتسبب في فشل تحميل CSS أحيانًا على جميع المتصفحات؟

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

  •  01-07-2019
  •  | 
  •  

سؤال

أنا أعمل على تطبيق ويب، وفي كثير من الأحيان نواجه مواقف حيث سيتم تحميل الصفحات دون تطبيق CSS.لقد ظهرت هذه المشكلة في IE6، وIE7، وSafari 3، وFF3.

سيؤدي تحديث الصفحة دائمًا إلى حل المشكلة.

هناك 3 ملفات CSS تم تحميلها، جميعها ضمن نفس كتلة النمط باستخدام @import:

<STYLE type="text/css">
  @import url([base css file]);
  @import url([skin css file]);
  @import url([generated css path]);
</STYLE>

في أي موقف عندما نأخذ الوقت الكافي لفحص مصدر HTML، لا يوجد شيء خارج عن المألوف.تبدو سجلات الوصول عادية أيضًا - فنحن نتلقى استجابات HTTP 304 لملفات CSS الثابتة كلما تم طلبها، واستجابة HTTP 200 لملفات CSS التي تم إنشاؤها.

نوع mimetype هو text/css لملفات css وcss الذي تم إنشاؤه.نحن نستخدم خادم iPlanet، الذي يعيد توجيه الطلبات إلى خادم Tomcat.

سأل ديفبوغ:

هل هو دائمًا لا يتم تحميل نفس ملف css أم أن المشكلة معهم جميعًا بالتساوي؟

لا يتم تحميل أي من ملفات CSS.أي أنماط محددة ضمن HTML تعمل بشكل جيد، ولكن لا شيء في أي من ملفات CSS يعمل عندما يحدث ذلك.

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

المحلول

لقد حدث شيء مشابه وتمكنت من إصلاحه من خلال تضمين ورقة أنماط أساسية أولاً باستخدام طريقة "link rel" بدلاً من "@import".أي.انقل تضمين [ملف CSS الأساسي] إلى:

<link rel="stylesheet" href="[base css file]" type="text/css" media="screen" />

ووضعها أمام الآخرين.

نصائح أخرى

إذا حدث ذلك في كثير من الأحيان بحيث تتمكن من رؤيته في متصفحك، فحاول تثبيت ملحق Firefox لرؤوس Live http أو ملحق Tamper Data، وشاهد رؤوس الاستجابة كما يراها المتصفح.

لا أعرف السبب، ولكن في حالتي إذا تم تحميل الصفحة من إجراء بالمسار مثل /ActionName, ، أرى هذه المشكلة.

ولكن إذا قمت بتغييره (على سبيل المثال) إلى /reservedArea/ActionName أو /aPath/ActionName إنها تعمل :/

هذا جنون...

يعد فحص الرؤوس فكرة جيدة، لكنني أتخيل أن كل ما ستتعلمه منها هو أن الخادم لم يستجب للطلب بين الحين والآخر.

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

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

يبدو الأمر غريبًا جدًا، لكن هذه هي الفكرة الوحيدة التي كانت لدي...

استخدم ab أو httperf أو curl أو أي شيء آخر لتحميل ملفات CSS بشكل متكرر من خادم الويب.ربما لا يخدم الصفحات باستمرار.

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