سؤال

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

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

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

إذن لماذا لا يدعو المرشحات الخاصة بي؟

قليلا حول برنامج الإعداد الخاص بي: القضبان 3.1 باستخدام ابتكار للمصادقة. أنا أستخدم جوهرة DALLI لمتجر memcached.

هنا هو بعض الكود الذي يلخص التعليمات البرمجية (الكثير من cruft قطع): giveacodicetagpre.

لذلك، هل شاهد أي شخص هذا السلوك من قبل؟ هل لدي ثقب في فهمي لكيفية عوامل التصفية والتخزين المؤقت للعمل من المفترض أن يعمل؟ أو ربما لدي بعض Voodo غريب يحدث مع تحرير وسرد غريب من إصدارات GEM؟

[تحرير]

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

[تحرير 2]

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

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

المحلول

حسنا، لقد كانت هذه طريقة زمنية للغاية لتعلم Tidbit جديدة حول التخزين المؤقت.

اتضح أنك تحتاج إلى إجراء المكالمة إلى caches_action بعد قبل_filters التي تريد تشغيلها.لقد وضعت إجراءات التخزين المؤقت كواحدة من الأشياء الأولى في صفي.هذا يعني أنه لم يتم تشغيل جميع المرشحات قبل ظهورها أدناه / بعد caches_action، وتوقف Caches_action تشغيل الرمز (ويقدم النتيجة المخزنة مؤقتا).

بفضل Pan Thomakos ل إجابته تحتوي على هذه الأحجار الكريمة من المعلومات - وهي إما ليست في مستندات Ruby أو قمت بإزالةها فوقها.سوف أدت إلى إضافة هذه المعلومات إلى المستندات بمجرد أن تمكنت من المخلب مرة أخرى الوقت المفقود بسبب هذا الباطن الصغير.

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