रोकें कैशिंग और ऑटो द्वारा अवरुद्ध अनुरोध कर रहे हैं ग्राहकों के अनुरोध को अवरुद्ध कर देगा ताजा कैशरेल कैश, जबकि वे
पुनर्जीवित हम आसानी से रेल cache
कर सकते हैं और सेट कि
Rails.cache.fetch(cache_key, expires_in: 1.minute) do
`fetch_data_from_mongoDB_with_complex_query`
end
की तरह समय समाप्त हो रहा है किसी भी तरह, जब नया अनुरोध आता है, समाप्ति होती है, और अनुरोध अवरुद्ध हो जाएगा। मेरा सवाल है, मैं इस तरह की स्थिति से कैसे बच सकता हूं? असल में, मैं पिछले कैश को क्लाइंट के अनुरोध पर देना चाहता हूं जबकि रेल कैश बना रहा है।
जैसा कि अपेक्षित व्यवहार आरेख में दिखाया गया है, दूसरा अनुरोध cache 1
मिलेगा लेकिन cache 2
नहीं होगा, हालांकि रेल cache 2
के लिए बना रहा है। इसलिए, उपयोगकर्ता को नए कैश बनाने पर ज्यादा समय नहीं बिताना पड़ेगा। तो, उपयोगकर्ताओं को ट्रिगर करने के अनुरोध के बिना मैं सभी कैश को स्वचालित रूप से पुन: उत्पन्न कैसे कर सकता हूं?
अपेक्षित व्यवहार
कैश टुकड़ा
cache_key = "#{__callee__}"
Rails.cache.fetch(cache_key, expires_in: 1.hour) do
all.order_by(updated_at: -1).limit(max_rtn_count)
end
अद्यतन
मैं एक आदेश में सभी कैश की गई कुंजी कैसे मिल सकती है?
क्योंकि कैश की गई क्वेरी start_date
, end_date
, depature_at
, arrive_at
की संरचना द्वारा उत्पन्न किया जा सकता है।
मैन्युअल रूप से सभी कैश किए गए कुंजी को अमान्य करना संभव नहीं है।
कैसे मैं सभी कैश कुंजी है, तो रैक कार्य
आप इसे (आसानी से) नहीं कर सकते हैं। ऐसा नहीं है कि रेल में कैशिंग कैसे काम करती है। आपको नए कैश उत्पन्न करने के लिए असीमित रूप से चलाने के लिए नौकरी को जुटाने की आवश्यकता होगी, और 'कैश' जैसी कुछ अंतर्निहित विधियों को ओवरराइट/संशोधित करें। – meagar
आप कैशिंग क्या कर रहे हैं? क्या कैश कुंजियों का उपयोग करना संभव है जो केवल तभी अपडेट होते हैं जब आप अपडेट कैश कर रहे होते हैं (इस प्रकार धीमी प्रतिक्रिया के साथ समस्या को बाधित करते हैं)? –