Bir komisyon görevinden benzer bir şey yapmaya ihtiyacımız vardı - biraz bağlamsal olan ve bir dizi diziden dolayı çok uzun bir varlık listesi (~ 700) göstermesi gereken kısmi bir kısma sahibiz. veritabanı yapısı sorunları ve özel sıralama ölçütleri, önbelleğe girmeden önce ilk kez 25 saniyeyi alacaktı> Bu, genellikle HTTP sunucularımızın 30 saniyeden sonra yanıtsız HTTP isteklerini sonlandırması ve önbelleğe alması nedeniyle zaman aşımına uğrayacaktı Bu özel liste bir çözümdü.
Yapmanız gereken, ActiveController :: Base'in bir örneğini veya yardımcı yöntemlere veya diğer varlıklara gereksinim duyarsanız, denetleyicilerinizden birini oluşturmaktır, sonra onun lookup_context başvurusunu yeni bir ActionView.Renderer örneğine iletir. Bizim tırmık görevi
, biz bu Rails 3.2.13 çalışır aşağıdaki
namespace :rake_for_time_consuming_nonsense do
task :pre_cache_long_list do
PreCacher.pre_fetch_partials
end
end
class PreCacher
def self.pre_fetch_partials
the_controller = ActionController::Base.new
# Set any instance variables required by your partial in the controller,
# they will be passed to the partial with the view_context reference
the_controller.instance_variable_set "@cache_key", cache_key
the_controller.instance_variable_set "@the_object", MyModel.first
view_renderer = ActionView::Renderer.new the_controller.lookup_context
view_renderer.render the_controller.view_context, {partial: 'my_model/the_partial', layout: false}
end
end
yaptı.
Teşekkürler @metaphalon .. bunu deneyecek ve rapor edecektir. – bgajdero
Bu işe yaramadı ya da en azından görünümü oluşturmak için alamıyorum. ais.response, üretilen kodu döndürdü, ancak kısmi olarak değil, kısmi olarak. HAML ile yanıtı konsoldan oluşturmanın herhangi bir yolu var mı? – bgajdero
Bu sadece önbelleği oluşturdu, ne tür önbellek kullandığınızı bilmiyorum. FileStore Backend'i kullanmanız gerekecektir, çünkü MemoryStore Bellekte yaşayacaktır ve tırmık (veya konsol) kapattığınızda tüm önbelleğe alınan kısmi parçalar kaybolur. – metaphalon