2012-01-13 14 views
8

मेरे पास रेल अनुप्रयोग है, जिसमें मैं सरल रेल कैश का उपयोग कर रहा हूं। मेरे परीक्षण इस प्रकार है:रेल कैश की अवधि समाप्त हो जाती है

Rails.cache.write('temp',Date.today,:expires_in => 60.seconds) 

मैं Rails.cache.read('temp') और Rails.cache.fetch('temp') के माध्यम से पढ़ सकते हैं।

समस्या यह समाप्त नहीं होती है। यह 60 सेकंड के बाद भी जीवित रहेगा। क्या कोई मुझे बता सकता है कि यहां क्या गुम है।

FYI करें:

config.action_controller.perform_caching = true 

config.cache_store = :memory_store 

क्या मैं बाहर याद किया है: मैं इस प्रकार मेरी development.rb में घोषणा की है? मैं अपने कैश की समयसीमा समाप्त करना चाहता हूं।

उत्तर

9

कुछ खोज के बाद, मुझे एक संभावित कारण मिला है कि 60 सेकंड के बाद कैश साफ़ नहीं किया गया है।

  1. आप Rails.cache.write पर कॉल करते हैं जिसे here दस्तावेज किया गया है।
  2. यह write_entry(namespaced_key(name, options), entry, options) पर कॉल करता है, जहां आपका विकल्प :expires_inoptions तर्क का एक हिस्सा है।

    if expires_in > 0 && !options[:raw] 
        # Set the memcache expire a few minutes in the future to support race condition ttls on read 
        expires_in += 5.minutes 
    end 
    

तो वहाँ 5 मिनट अपने 60 सेकंड के लिए जोड़ रहे हैं:

  • implementation of write_entry निम्नलिखित शर्त है। 2 संभव समाधान:

    • बस :-)
    • प्रयास करें इसके साथ रहते हैं विकल्प :raw => true शामिल करने के लिए, शायद इस शर्त को छोड़ देगा ताकि आपके समाप्ति काम करता है के रूप में संदिग्ध।
  • +0

    अपने पुनरावृत्ति के लिए धन्यवाद .... मुझे कोशिश करते हैं और आप जानते हैं – palani

    +0

    हाँ mliebelt ठीक है, भी एक अच्छा रेल कैश डॉक में आप यहाँ http://guides.rubyonrails.org/caching_with_rails.html ढूंढ सकते हैं –

    5

    :expires_in विकल्प केवल संगत स्टोर्स (जैसे memcached) के साथ काम करता है - स्मृति नहीं।

    http://guides.rubyonrails.org/caching_with_rails.html से:

    अंत में, यदि आप memcached या ehcache उपयोग कर रहे हैं, आप भी पारित कर सकते हैं : expires_in। वास्तव में, कैश_एक्शन द्वारा उपयोग नहीं किए जाने वाले सभी पैरामीटर अंतर्निहित कैश स्टोर में भेजे गए हैं।

    संबंधित मुद्दे