سؤال

هذا واحد قد ارتدي.

لدي عرض مع شظية مخزنة مؤقتا:

 - cache :key=>"news" do    
   %h2 News
   - etc

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

def expire_home_cache
  puts "expire_home_cache"
  expire_fragment(:key => "news") 
end

يسمى Sweeper كما أستطيع أن أرى "expire_home_cache" في إخراج وحدة التحكم.

لكن الشظية غير محدثة ...

أيه أفكار؟

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

المحلول

قد تحاول هذا:

   cache("news") do    
     %h2 News
     - etc
   end

و...

def expire_home_cache
  puts "expire_home_cache"
  expire_fragment("news") 
end

... أو جرب هذا ...

 - cache({:key=>"news"}) do    
   %h2 News
   - etc

أفكر في أن القضية قد تكون أن روبي أو القضبان تواجه صعوبة في تحديد ما هو المفتاح هو بالضبط وهكذا تقوم طريقة ذاكرة التخزين المؤقت و Expire_Fragment بتوليد مفتاحين مخبأين مختلفين.

نصائح أخرى

حاول استبدال expire_fragment(:key => "news") مع ActionController::Base.new.expire_fragment(:key => "news")

لا وقت لشرح، لكنه يعمل بالنسبة لي.

الطريقة المناسبة للقيام بذلك هي:

cache :news do

  ...
end

ثم في كاسحك:

expire_fragment :news

لا يجيب هذا على سؤالك مباشرة، لكن هل جربت البرنامج المساعد Timed_fragment_cache كديل؟

http://github.com/tricycle/timed_fragment_cache/tree/master.

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

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