Rails отправляет кэшированную страницу только для гостевых пользователей - PullRequest
0 голосов
/ 28 октября 2011

Я новичок в кэшировании, поэтому это может быть очевидно.

Я хочу добиться чего-то подобного:

  1. Пользователь не зарегистрирован.Он получает кэшированную страницу.

  2. Пользователь вошел в систему. Он получает обычную страницу, а не кэшированную.

Что-то в этом роде (псевдокод):

caches_action :index, :if => !current_user

К сожалению, это не сработает, но я думаю, вы согласны.

Ответы [ 3 ]

3 голосов
/ 28 октября 2011

Поскольку кэширование страниц фактически сохраняет файл .html, который веб-сервер получает напрямую, полностью обходя Rails, вы не можете использовать этот метод.

Лучшим подходом может быть кэширование содержимогостраницы условно.Я обычно реализую метод cache_if, который оборачивается вокруг метода view cache и может принимать условие:

def cache_if(condition, *options, &block)
  if (!condition)
    yield
  else
    cache(*options, &block)
  end
end

При использовании он будет выглядеть так:

<% cache_if(!current_user, '#content') %>
...
<% end %>
0 голосов
/ 30 октября 2011

Решение:

caches_action :index, :unless => :current_user

0 голосов
/ 28 октября 2011

Вы можете увидеть Cache Sweeper для пользовательских сессий. Таким образом, вы можете настроить его так, как при создании UserSession, срок действия страницы кэша истекает. Связанные документы Rails на подметальные машины превосходны.

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