Как я должен кэшировать страницу, которая должна отслеживать каждый просмотр? - PullRequest
0 голосов
/ 22 января 2012

У меня есть страница продукта. Действие шоу имеет следующий код:

def show
  ...
  LiveView.add_live_view(@product, request)
  ...
end

В этом же контроллере, если у меня есть:

caches_action :show, :cache_path => (proc do 
  product_path(params[:id], :user_id => user_signed_in? ? current_user.id : nil)
end)

Я пытаюсь отображать представления в режиме реального времени, получая IP-адрес от request. Итак, мне нужно отслеживать каждое представление, которое попадает на страницу. Однако, если страница уже кэширована, она никогда не вызовет метод LiveView.add_live_view(@product, request).

Вопрос в том. Должен ли я кешировать это действие? Если так, как это должно быть сделано? Или я должен забыть о кешировании для этого метода?

Стоит ли думать о другом подходе кеширования? Есть предложения?

1 Ответ

0 голосов
/ 22 января 2012

Я не уверен, что кэширование на уровне приложений является правильным решением.Я предлагаю посмотреть на mod_cache , который кэширует ответ на уровне apache.(Если вы работаете с Apache пассажира).

Наконец, не забывайте об этом правиле.Никогда не оптимизируйте, если нет необходимости.Я имею в виду, сначала протестируйте ваше приложение.Не страдает от потери производительности, если вы не кешируете.Вам все еще нужно кэшировать все?Сделайте некоторый анализ кода и, возможно, вы можете использовать лучший алгоритм.

Редактировать, также посмотрите код состояния HTTP 304 .Если пользователь обновляет страницу, и вы можете сообщить, что ничего не изменилось, просто верните 304.

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