Как долго длится фрагмент кеша в Rail? - PullRequest
0 голосов
/ 18 ноября 2011

Я кеширую некоторые html-страницы на этой странице:

<% cache do %>
  <%= some_field %> minutes ago
<% end %>

Я не хочу, чтобы запрос db проверял это поле (это необходимо), но все равно хотелось бы, чтобы срок действия кэша истеквозможно, через 30 минут.

Как долго это длится по умолчанию?А что можно сделать для того, чтобы поставить на него срок действия?

1 Ответ

2 голосов
/ 18 ноября 2011

То, что вы делаете, называется фрагментным кэшированием в Rails.

Rails Кэширование фрагментов будет продолжаться до тех пор, пока не произойдет первое из следующих действий

  • Вы звоните expire_fragment
  • Срок действия вашего очистителя истекает, фрагмент, все фрагменты, все и т. Д.
  • Срок действия вашего хранилища кеша истекает

Срок действия хранилища кеша зависит от того, какой магазинваше приложение использует.Если вы используете файловую систему, кэш может длиться очень долго (дни, недели и т. Д.).

Добавлено Если вы используете memcache в качестве хранилища, memcache имеетобщее время истечения.Кроме того, в memcache истекает срок действия элементов в порядке старшего касания, срок действия которого истек, если вы ограничиваете общий размер memcache, и при добавлении нового значения ему не хватает места.

Авто истекает AХороший метод для истечения срока действия элементов кэша - хранить их в memcache и автоматически истекать их при наличии свежих данных.Сделайте это, используя номера версий в ключах кеша.См. Секрет Memcached

Re: Срок действия истекает через 30 минут Один из способов сделать это - использовать memcache и установить общее время истечения 30 минут.Или у вас может быть задание cron (или delay_job, или другой исполнитель заданий), которое будет вызывать expire_fragment каждые 30 минут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...