Rails как кешировать частично? - PullRequest
0 голосов
/ 03 октября 2018

Я использую render partial: 'fragment', locals:{obj:item} для каждой строки в таблице.Обработка всей страницы занимает много времени.

Есть ли способ сохранить все фрагменты для каждого элемента при первой загрузке и не отображать их снова каждый раз во время работы сервера?

ОБНОВЛЕНО

card/index.html.haml
%table 
  =render partial: 'card/card', collection: @cards, cached: true

card/_card.html.haml
-cache card do
  %tr=card.title

card_controller.rb
def index
  @cards = Card.order(:name)
end

РЕШЕНО

Кэширование начало работать после добавления в development.rb:

config.action_controller.perform_caching = true
config.cache_store = :memory_store, { size: 64.megabytes }

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Или вы можете запустить rails dev:cache для переключения кеширования.

0 голосов
/ 03 октября 2018

В конфигурации rails по умолчанию не включено / не настроено кэширование в разработке.Начиная с rails 5, вы можете touch tmp/caching-dev.txt или rm tmp/caching-dev.txt и перезапустить сервер, чтобы включить его (для более ранних версий вы можете перенести это в свое приложение, см. config / development.rb из 5.2.1 ).

Обратите внимание, что вы также должны сконфигурировать производственную среду и иметь бэкэнд кеша - может быть расточительно иметь отдельный кеш на каждом работнике.Таким образом, redis / memcached должен быть удобен.

Тогда, как правило, лучше использовать одно и то же хранилище кэша и аналогичную конфигурацию при разработке, потому что хранилище кэша имеет ненулевую задержку, а иногда может быть быстреекэшировать что-то, и вы хотите, чтобы ваша среда разработки была ближе к производству.

...