Невозможно обновить модели с кэшированием страницы. - PullRequest
1 голос
/ 04 марта 2009

У меня очень фундаментальная проблема с механизмом кэширования страниц Rails.

В приложении rails 2.0.5 я использую большое количество кешированных страниц, все работает нормально, страницы обслуживаются с большой скоростью apache.

Пока весь контент обрабатывался в административном разделе, подметальные машины работают хорошо.

Но теперь я открыл редакцию некоторых разделов для пользователей, которые проходят не через пространство имен «admin», а обычные маршруты.

проблема в том, что кажется, что когда обновления выполняются, они не обращаются к монгрелу с помощью действия "put", вместо этого я просто получаю кэшированную страницу (никаких действий в базе данных, никаких флеш-сообщений и ничего. ...)

Мне кажется, что я что-то здесь упустил, возможно ли использовать кэширование страниц с обычными маршрутами REST? или у меня проблема с конфигурацией mongrel / apache?

EDIT:

спасибо за ваш ответ, но это не то, что я имел в виду, механизм полного кэширования страниц работает нормально, у меня есть специальные подметальные машины в контроллерах администратора, которые обновляют страницы.

Моя проблема в том (или я так думаю), что когда модели обновляются через обычные контроллеры, форма отправляется на кэшированную страницу, а не на соответствующее действие.

в форме

/ страницы / 1-привет / редактировать
Форма должна быть размещена методом "put" на "/ pages / 1-hello"

но я полагаю, что он идет на кэшированную страницу '/pages/1-hello.html' и рассматривается как обычное получение ....

Когда я отправляю форму, я просто вижу действие показа, без флеш-сообщения, ничего не обновляется. затем я удаляю кешированный файл в моем публичном каталоге, снова отправляю форму и вдруг все работает ....

Я прочитал раздел кеша "rails way" и учебное пособие на railsenvy.com, но я никогда не видел упоминаний о кэшированных страницах, которые могли бы вызвать такие проблемы ...

1 Ответ

1 голос
/ 06 марта 2009

Вы, вероятно, кешируете слишком большую часть страницы. Если вы кэшируете всю страницу, а затем изменяете содержимое этой страницы с помощью действия put, страница не зарегистрирует изменение, если вы явно не очистите кеш.

Если у вас есть копия «The Rails Way», приведено несколько великолепных примеров того, как страницы с истекшим сроком действия загружаются при следующей загрузке.

Более или менее, вы должны сделать что-то вроде следующего в вашем действии создания:

expire_page :action => 'index'

Вы также можете создать наблюдателя для наблюдения за вашей моделью и истечения срока действия кэша без необходимости явного вызова его после действия создания или обновления.

Надеюсь, это поможет.

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