Скажем, у меня есть сайт Rails 4.2 на Heroku со многими сообщениями. Когда сообщение просматривается, приложение попадает в базу данных, чтобы получить данные и связанные данные из других моделей. Посетители (не зарегистрированные пользователи) на мой сайт должны видеть сообщения без каких-либо настроек, поэтому отображение этих страниц не должно требовать доступа к базе данных. Как я могу настроить простую страницу или кеширование действий (или эквивалент) для всех посетителей на моем сайте, чтобы база данных была пропущена? Могу ли я также позволить CDN взять на себя эти страницы?Как добавить кеширование страницы в приложение Rails для посетителей?
ответ
Для начала взгляните на the Rails caching guide. Как кеширование страницы, так и действие были удалены из Rails.
Вы можете попробовать фрагментировать кеширование, которое захватит сгенерированный HTML-сообщение и сохранит его, хотя вам понадобится условное условие, основанное на том, есть ли current_user
.
супер-простой вариант может выглядеть следующим образом:
приложение/просмотров/сообщений/show.html.erb
<% cache_unless (current_user, @post) do %>
<%= @post.body %>
<% end %>
Метод cache
собирается быть чтения действие, если для этого сообщения существует кеш, и он будет генерировать и записывать действие, если этот кеш не существует.
Кэширование с помощью объекта ActiveRecord создает ключ, который включает в себя updated_at
по умолчанию, поэтому, если сообщение изменяется, первый посетитель, который загружает сообщение, будет иметь более длительное время ожидания, и каждый последующий посетитель получит преимущества кэширования.
Что касается вашего другого вопроса, существует множество других инструментов на основе Ruby для обслуживания статических страниц, и обзор всех этих вопросов мне незнает и, вероятно, выходит за рамки этого вопроса. :)
Вы действительно не хотите кешировать здесь. Вы просто хотите условное как в контроллер и вид, как
# controller
if logged_in?
@post = Post.find(params[:id])
# load more records
end
# view
<% if @post %>
<%= @post.title %>
...
<% else %>
You're not logged in, blah blah.
<% end %>
.. считая контроллер больше, чем просто загрузку после записи. Я не обязательно соглашаюсь с условной загрузкой записи, как указано выше, но для этого может потребоваться ваш прецедент.
В качестве альтернативы, если вам требуется кэширование для повышения производительности, вы можете просто элегантно включать текущий идентификатор пользователя в кеше фрагмент как
<% cache "post-#{@post.id}-#{current_user ? current_user.id : 0}" do %>
<% if logged_in? %>
... # expensive operations
<% else %>
Please login to see more..
<% end %>
<% end %>
так, что кэш работает с тем же кодом для пользователей или Анонс , Ответ
Лэнни Бозе действительно выглядит лучше, но я добавлю эту ссылку:
https://devcenter.heroku.com/articles/http-caching-ruby-rails#public-requests
Вся страница полезна, но, в частности, говорится о маркировке запросов как государственные или частные. По умолчанию они являются закрытыми, но если вы помечаете его как общедоступное, он позволяет страницам обслуживаться промежуточным прокси-кешем.
Связанная страница рассказывает о Rack :: Cache + memcache как кэш-прокси; Я не уверен, что это все еще существует в рельсах 4.
Это вторая Heroku страница говорит о кэшировании действий, которые могли бы кэшировать конкретные действия для вас:
https://devcenter.heroku.com/articles/caching-strategies#action-caching
- 1. RAILS: Остановить кеширование для тестирования
- 2. Как отключить кеширование страницы?
- 3. Как отключить кеширование в Rails?
- 4. Как работает кеширование классов в rails 2.2+
- 5. Rails текущий счетчик посетителей
- 6. Как добавить HTTP-кеширование запросов в приложение с использованием ASIHTTPRequests?
- 7. Как добавить кеширование в мое приложение MVC и службу WCF
- 8. Как добавить приложение для другой страницы Facebook?
- 9. Android-кеширование, как приложение Trello
- 10. Как работает кеширование фрагментов Rails?
- 11. Rails - как получить IP-адрес посетителей?
- 12. Как использовать кеширование браузера в Rails 4?
- 13. Rails 4 и кеширование действий
- 14. Приложение для интеграции с интеграцией и кеширование
- 15. Rails - кеширование внешних HTTP-вызовов
- 16. Перенаправить посетителей на новые страницы
- 17. Как обслуживать кешированные страницы для посетителей в первый раз?
- 18. Как добавить поле изображения в приложение Rails?
- 19. Добавление новой страницы в Rails 4 Приложение
- 20. Как добавить страницы в существующее приложение AngularJS?
- 21. Как добавить пользователя в приложение rails вручную?
- 22. Количество посетителей моей веб-страницы
- 23. Как очистить кеш для определенной веб-страницы в Rails-приложении
- 24. Как добавить загрузку файлов в приложение rails?
- 25. Как добавить CSS JQuery в приложение Rails
- 26. Как получить количество посетителей страницы на GAE?
- 27. Приложение Rails 3.2 похоже на кеширование запросов по запросам?
- 28. Как добавить Rails-Jquery обратно в приложение Rails?
- 29. Показать количество посетителей страницы Bolt в интерфейсе?
- 30. Как загрузить страницы через ajax-кеширование содержимого?