Кэширование в nginx для анонимных пользователей

Здравствуйте
С праздниками!

В связке ubuntu 10.04 lts + nginx 0.7.64 + php 5.3 php-fpm + apc + memcached + livestreet 0.4.1 страшно хочется настроить кэширование всего сайта для анонимных пользователей.

Кэшировать fastcgi_ запросы получается, но криво. Анонимусы могут видеть страницу авторизованного пользователя или авторизованные видят страницу для анонимуса. Иногда не совсем верно работает login/logout.

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

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

Примеры:
dklab.ru/chicken/nablas/56.html
drupal.ru/node/48471

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

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

Шквал вопросов
Может моя связка не очень?
Каких самых лучших результатов вы добились используя аналогичные связки?
Какой у вас response time при приличной нагрузке в 50-100 запросов в секунду.
Очень интересны ваши конфиги, результаты тестов на «боевых» серверах.
Тюните ли вы my.cnf, выставляя innodb size, table cache и другие настройки, которые советует mysqltuner.pl?
Вообщем интересно все, как вы оптимизируете и настраиваете свои сервера.

Что показывает siege, например при такой строчке
siege -d1 -c100 -t30s http://site.com/

Давайте найдем решение, чтобы сделать наши livestreet проекты стали самыми быстрыми в интернетах.
Не знаю правда или миф, но быстро работающим сайтам поисковики шлют больше трафа :-)

ps: Autocompleter перестал работать верно в Chrome и IE.

9 комментариев

avatar
Кэшировать получается, но криво. Анонимусы могут видеть страницу авторизованного пользователя или авторизованные видят страницу для анонимуса.
А у меня все нормально. Изучайте конфиги, такого быть не должно.
PS: у самого так вот: ls 0.4.2 + debian lenny + nginx + php 5.3 + php-fpm + xcache
avatar
Вы кэшируете fastcgi запросы? Можно посмотреть ваш конфиг nginx.conf и конфиг хоста?
Просто связка работает само собой. Gzip, opcode cache все дела.

Какая у вас конфигурация сервера?
Можете siege'ом прогнать для теста?
avatar
Попозже может.
В принципе сделал все отсюда: habrahabr.ru/blogs/nginx/71501/
И не забудьте учесть последний коммент как раз для проблем с авторизацией.
avatar
Пробовал инструкцию и по вашей ссылке. Эту тоже.
И другие.

Думаю мой разум в жуткой каше, что лучше обождать вашей помощи :)
Спасибо.
avatar
Поменяй ea + memcached на просто xcache и проверь исчезла ли ошибка. маны есть тут на лс
avatar
У меня нет eaccelerator. Нет ошибок 502, вся связка описанная в топике работает отлично.

Я имею ввиду что сейчас максимум чего удалось добиться это кэширование nginx fastcgi запросов для всех пользователей. А нужно только для анонимусов.

Сюда
fastcgi_cache_key "$server_addr:$server_port$request_uri|$cookie_phpsessid"; 
Пробовал совершенно разные комбинации, с visitor_id, меняли процессы в ActionLogin.class.php, использовали login_id, а не phpsessid. Все одно, авторизованным пользователям выдается кэш. Например комменты публикуются, но если выйти со страницы и вернуться, то комента нет, до тех пор пока кэш не станет Expired.
Никак не отловить что человек залогинен в данный момент.

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

Мне было бы достаточно взглянуть на ваш конфиг хоста nginx, раз у вас кэшироание работает правильно. И, если вы меняли что либо в ActionLogin.class.php будет здорово узнать.
avatar
  • kep
  • 0
avatar
Спасибо, но Хабр, гугл и т.д. опробовано. Работает только как описано в топике.
avatar
Не забываем для fpm прописывать в /etc/php5/fpm/php.ini
cgi.fix_pathinfo=0
  • Mmka
  • 0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.