Для начала о принципе работы BuddyPress. Я не буду углубляться в файлы php и код, так как многим это не нужно, а кому нужно, спросят у меня в комментариях. Давайте посмотрим в базу данных. Вот вы закончили установку BuddyPress, посмотрите на созданные таблицы. По названию некоторых вопросов не возникнет – все будет понятно. Единственно, что может действительно смутить, так вот такие таблицы:
Все три таблицы относятся к одному и тому же пользователю. Именно так, это означает, что для каждого пользователя создается 3 таблицы и если у вас 100 пользователей, то в общей сложности у вас в базе данных будет не менее 350 таблиц (50 – это минимум такое количество используется в WPMU с учетом того, что некоторые плагины тоже создают свои собственные таблицы). Такое количество еще не критично, и даже виртуальный хостинг выдержит нагрузку. Но предположим у вас 1000, или 10000 пользователей. Тогда получается 3000 или 30000 таблиц дополнительно и постоянные запросы к ним. Тут обычным хостинг-планам уже вряд ли есть шанс не справится, только собственные сервера, причем правильно настроенные выдержат.
Решением является (если у вас достаточно денежных ресурсов) покупка нескольких серверов, с разделением базы данных на многие составляющие. Я имею в виду, что предположим в одной базе данных у вас всего по несколько сот пользователей. Тогда несколько тысяч баз данных – и многомиллионная аудитория ничего не заметит. Многие хостинг-провайдеры предоставляют такую возможность – неограниченное количество баз данных, единственным минусом является стоимость :)
Кстати, на создание 1 миллиона таблиц в базе данных специальному скрипту необходимо 27 часов, это при том, что в таблице только 2 колонки и 1 строка (пустая).
Есть вариант использования разработки людей, специализирующихся на оптимизации баз данных. Чтобы получить иной вариант решения проблемы, я поискал в интернете и нашел ресурс The Lyceum Project.
В основе этого проекта лежит процесс изменения архитектуры таблиц в базе данных, что в конечном итоге уменьшает их количество и, следовательно, увеличивает скорость ответа на запросы. Их web-программы помогают разбить все данные и разместить их в несколько БД и даже несколько web-серверов.
Но вернемся к BuddyPress. Помимо сложной архитектуры таблиц в БД он еще создает одну папку для каждого пользователя. Тоже неудобно, особенно для Unix систем (там есть ограничения для web-серверов на количество создаваемых папок; подробней рассказать не могу – я не специалист Unix). Это означает, что для миллиона пользователей BuddyPress создаст миллион папок, в каждой из которых будут храниться файлы одного пользователя – закачанные им фото и другие материалы.
Что можно сделать со всем этим? Как увеличить скорость работы? Как дать возможность серверу работать без проблем при больших нагрузках?
Помимо использования (при желании) разработок The Lyceum Project можно, и даже необходимо, использовать:
eAccellerator или , что значительно уменьшит нагрузку на сервер (доступно только на своем сервере или выделенном хостинге иногда, на виртуальном не получится, не будет необходимых прав доступа)
, который уменьшит количество запросов к серверу за счет кеширования страниц для неавторизованных пользователей.
Есть еще несколько тактик оптимизации WordPress MU, на котором собственно и работает BuddyPress. Эти тактики может использовать любой блоггер. О них я расскажу в другой раз.
Какой же можно сделать вывод? Если вы делаете портал, ориентированный на аудиторию по объему равному Вконтакте, Facebook или LJ, то будьте готовы к внесению изменений, оптимизации существующих стандартных настроек WPMU и BuddyPress.
Если же вы создаете социальную сеть для друзей, сотрудников (только не корпорации, а компании с максимум несколько тысяч человек), для узкого круга людей (любителей надувных шариков и засыпать на крыше под луной), то комбинация BuddyPress+WordPress MU даст вам именно то, что вы ищете – удобство, многофункциональность и комфорт. И помните, что уже столько плагинов разработано, что не хватит жизни их все перепробовать.
Пожалуйста, подождите. Комментарии загружаются.