Опции кеширования гибридных рельсов, я что-то изобретаю? - PullRequest
1 голос
/ 05 февраля 2010

Ну, на самом деле не изобретать заново, однако, у нас есть большой контент-сайт, который обрабатывает нагрузку (после того, как мы исправили проблему с пулом SQL) до определенной точки, а затем мы просто выдохлись. Во многом это связано с плохим кодом, который мы пытаемся исправить, но во многом это связано с уровнем запросов и т. Д.

Мы рассматривали кеширование страниц, потому что, черт возьми, это чертовски быстро (да ...: D), но это не работает, потому что у нас есть определенные фрагменты на странице, специфичные для вошедшего в систему пользователя. Но не вся надежда потеряна ...

Мне было интересно, было бы идеально сделать следующее:

  1. Кэширование на уровне страницы с очистителями для очистки страниц при обновлении контента.
  2. Заменить пользовательские фрагменты местозаполнителями (и, возможно, универсальным контентом, например ... "Просмотреть свою учетную запись или зарегистрируйтесь здесь")
  3. Когда при загрузке страницы пользователя запускается асинхронный запрос (AJAX, или, как некоторые называют, AJAH), который запрашивает «динамический» фрагмент, а затем помещает заполнители содержимого с этим фрагментом.

Основная проблема, с которой я могу столкнуться, заключается в том, что пользователи с отключенным JS не увидят контент, но я, честно говоря, не думаю, что это нас сильно затронет, и, по-моему, люди, которые отключают JavaScript, для большинства часть, идиоты (да, я сказал это!).

Мне также было бы интересно узнать, если я (без сомнения) что-то изобретаю, и если кто-то может указать мне на сайт, который уже делает что-то подобное, это будет оценено.

Спасибо огромное сообщество SO!

Ответы [ 3 ]

3 голосов
/ 05 февраля 2010

Райан Бейтс описал эту технику в Railscast 169: динамическое кэширование страниц . На это стоит взглянуть.

0 голосов
/ 05 февраля 2010

Когда обслуживание статического контента или кэшированного контента начинает замедляться, обслуживая реальные рабочие процессы, установите обратный прокси-сервер в качестве внешнего интерфейса для вашего приложения. Это освободит процессы для выполнения реальной работы и уменьшит замедления из-за того, что кэши файловой системы станут неэффективными. И это поможет вам сделать «кэширование на стороне клиента» доступным для нескольких посетителей. Взгляните на фантастическую серию скриншотов о кешировании и масштабировании от NewRelic: http://railslab.newrelic.com/scaling-rails

0 голосов
/ 05 февраля 2010

Задумывались ли вы о кэшировании фрагментов на стороне сервера? Я использовал это широко, и это не могло быть более удивительным. Вы можете просто кэшировать содержимое «фрагментов» и воспроизводить их в обычном режиме независимо от того, какой пользователь вошел в систему.

Есть много хороших ресурсов для кэширования фрагментов, я бы начал с документации: http://api.rubyonrails.org/classes/ActionController/Caching/Fragments.html

Также очень хорошо из серии Scaling Rails: http://railslab.newrelic.com/2009/02/09/episode-7-fragment-caching

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