Кэширование страниц Rails с внутристраничным администрированием - PullRequest
1 голос
/ 10 марта 2010

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

Я использую Apache + mod_rails (Passenger). Есть ли способ указать Apache, что файлы .html следует игнорировать, когда у текущего пользователя есть переменная сеанса или файл cookie с именем «admin» *? Переменная сеанса не должна быть оценена Apache на достоверность (поскольку в этом случае она будет оценена Rails).

1 Ответ

1 голос
/ 10 марта 2010

Есть ли способ указать Apache, что файлы .html следует игнорировать, когда у текущего пользователя либо есть переменная сеанса, либо файл cookie с именем 'admin' *?

Я полагаю, что это на самом деле невозможно. Даже если это так, я думаю, это должно быть очень сложно.

Вместо этого вы можете использовать Кэширование действий . Цитата из документов:

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

Это звучит как ваш случай.


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


Вы, вероятно, можете преодолеть это, используя Dynamic Page Caching . Идея состоит в том, чтобы добавить часть «admin» из JavaScript. Лично мне это не очень нравится.


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

Будет работать для вас, но это довольно грязное решение.

...