Назад | Перейти на главную страницу

Хранение кешированных файлов, чтобы они были доступны более чем одному серверу

Я хочу начать использовать несколько интерфейсных серверов Apache для своего веб-сайта.

На данный момент я храню различные HTML-файлы в каталоге кеширования, например. "/htmlcache/homepage.html"

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

На мой взгляд, есть следующие варианты:

Задержка для меня важна. Операция чтения с диска в настоящий момент у меня работает очень хорошо.

В качестве дополнительной сложности мне также нужно будет хранить данные моего сеанса PHP в центральном месте.

Эта ветка: https://stackoverflow.com/questions/580671/configure-session-to-work-on-applications-that-are-deployed-over-multiple-server рекомендует использовать session_set_save_handler для хранения данных сеанса в общей базе данных.

Как вы решаете эту проблему?

memcached может хранить "большие" HTML-файлы (для подходящих небольших значений больших) - Лак (как сказал Майкл Миор) или Кальмар другие варианты. Из этих трех я бы предпочел Varnish (Squid является излишним для большинства небольших сред, и я считаю, что Varnish лучше масштабируется в средах среднего / большого размера: в прошлый раз, когда я проверял, что Squid не поддерживает распределенное кеширование).
Очевидно, вам нужно будет протестировать любое из этих решений перед их развертыванием.

Re: часть сеанса PHP - session_mysql это одно из решений здесь. Другой вариант - написание собственного обработчика сеанса на PHP. Я бы лично предложил одно из расширений PECL, поскольку они, как правило, немного более эффективны / быстрее, чем код PHP.