PHP5.3 مع مشكلة التخزين المؤقت Fastcgi تراكم الطلبات المختلفة

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

  •  01-10-2019
  •  | 
  •  

سؤال

لقد صممت مجموعة من ملفات الأنماط/JavaScript Files و Minifier التي تستخدم آلية ذاكرة التخزين المؤقت البسيطة. إنه يكتب ببساطة في ملف الطابع الزمني لكل ملفات مجمعة ويقارن تلك الطوابع الزمنية لمنع إعادة كتابة "الملف الرئيسي" مرة أخرى. وبهذه الطريقة ، بعد تحديث التطبيق (هنا موقع الويب الخاص بي) ، حيث تم تعديل ملفات CSS أو JS ، فإن طلبًا واحدًا سيؤدي إلى التخزين المؤقت مرة أخرى مرة أخرى. هذا ، وجميع الطلبات الأخرى ستشاهد ملفًا متجمعًا مثل Master.css؟ V = 1234567.

الشيء ، في ظل بيئة التطوير الخاصة بي ، كل اختبارات تمر ، يعمل التكامل بشكل رائع ويعمل كل شيء كما هو متوقع. ومع ذلك ، في بيئة التدريج الخاصة بي ، على خادم مع PHP5.3 تم تجميعه باستخدام FastCGI ، يبدو أن ملفاتي المخبأة يتم إعادة كتابتها ببيانات غير صالحة ولكن فقط عندما لا يتم طلبها من نفس المتصفح.

حالة الاستخدام:

  • أقوم بتقديم الطلب الأول على Firefox ، تحت Linux. كل شيء يعمل كما هو متوقع لكل الطلبات الأخرى على هذا المتصفح.
  • بمجرد تقديم طلب على Windows/Linux (IE7 ، IE8 ، chrome ، إلخ) ، يحصل ملف ذاكرة التخزين المؤقت الخاص بي على بيانات غير صالحة ، ولكن فقط على خادم التدريج الذي يعمل تحت FastCGI ، وليس قيد التطوير!
  • تشغيل طلب آخر على Firefox يعيد الملف بشكل صحيح.

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

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

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

هل هناك طريقة لتعطيل هذا التخزين المؤقت FastCGI لطلبات محددة من خلال وظيفة PHP ربما؟

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

المحلول

اعتمادًا على بيئتك ، يمكنك النظر في عمل شيء ما باستخدام .htaccess في Apache لخدمة تلك الطلبات في وضع CGI العادي. من المحتمل أن يتم ذلك باستخدام مجرد AddHandler بسيط ، والعمل الذي يشير إلى CGI مباشرة. يفترض هذا النوع أنك تنشر في نوع من بيئة الاستضافة المشتركة حيث لا يمكنك الوصول المباشر إلى تكوين Apache.

نظرًا لأن FastCgi استمرت في العملية لفترة معينة من الوقت ، فمن المنطقي أنه يمكن أن يربط الملف في نقطة لاحقة بعد التنفيذ الأولي ، على الرغم من أن الخطأ المعين قد يكون خارج عني.

لا أعرف الكثير من المساعدة ، لكن قد أعطيك بعض الأفكار ...

تحرير: هنا هو رمز .htaccess من تعليقي أدناه

Options -Indexes +FollowSymLinks +ExecCGI
AddHandler php-cgi .php
Action php-cgi /cgi-bin/php5.cgi
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top