Истекающий кеш Rails-фрагмента из внешнего приложения - PullRequest
0 голосов
/ 23 февраля 2010

У меня есть приложение Rails с базой данных, которая обновляется из внешней программы C ++. Я бы хотел ускорить приложение, используя кеширование фрагментов, но когда запись обновляется, соответствующая запись в кеше фрагментов должна истечь.

1 Ответ

1 голос
/ 23 февраля 2010

Если приложение C ++ обращается напрямую к базе данных, вы можете использовать фрагментное кэширование в сочетании с cache_key .

Это простой и встроенный в Rails. Все, что вам нужно сделать, это убедиться, что ваше приложение C ++ обновляет поле updated_at записи при обновлении основного содержимого записи. Затем вы можете поместить свой фрагмент в объект записи, и кэш автоматически истечет при изменении записи.

<% cache [@article, :metadata] do %>
here the content to be cached
for example the <%= @article.title %>.
:metadata is simply a name for this fragment.
<% end %>

При условии, что запись @article была сохранена 2010-02-10 18:00:00, фрагмент будет кэшироваться в /path/to/cache/.../24-20100210180000. Когда ваш C ++ обновляет запись и изменяет столбец updated_at, кеш будет признан недействительным, и следующий запрос автоматически снова попадет на содержимое.

Для получения дополнительной информации о кэшировании, проверьте http://railslab.newrelic.com/scaling-rails

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