истечение срока действия кэша страниц на нескольких серверах приложений - PullRequest
7 голосов
/ 13 августа 2011

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

Ответы [ 2 ]

0 голосов
/ 20 апреля 2016

Предполагая, что ваши серверы приложений могут получить доступ к общему хранилищу файлов, вы можете изменить местоположение, в котором rails хранит кеш. Таким образом, когда вы истечете срок действия кэша, он будет отражен на всех серверах приложений. В вашей конфигурации просто добавьте:

config.cache_store = :file_store, "/path/to/cache/directory"

Это, наверное, самый простой способ. Есть и другие методы, такие как сервер memcached.

Подробнее здесь: http://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-filestore

0 голосов
/ 27 июня 2012

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

Редактировать: еще одно решение - разделить публичный каталог на всех машинах через NFS или что-то подобное.Таким образом, каждый сервер может аннулировать кеш для всех машин.

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