Есть ли способ обновить кэш фрагментов таким образом, чтобы можно было выполнять чтение из кэша во время обновления?
Я кэширую часть представления html.erb в Rails с блоком cache do .. end
в erb.
У меня истекает тот же кеш в контроллере с вызовом expire_fragment(:controller => 'controllername')
Я использую memcached в качестве хранилища кеша фрагментов.
Я могу ошибаться, но похоже, что поведение по умолчанию таково, что в момент вызова expire_fragment
фрагмент удаляется из кэша, поэтому другой запрос через доли секунды для этого же фрагмента пропустит кэш.
Что я действительно хотел бы, чтобы чтение из кэша продолжалось до тех пор, пока новый фрагмент не будет вычислен и сохранен в кэшированном, после чего все последующие запросы получат эту новую кэшированную версию.
Этот конкретный фрагмент дорогой для вычисления. Это займет около 7 секунд.