Прежде чем ответить на этот вопрос, я никогда не разрабатывал ничего настолько популярного, чтобы достигать высоких нагрузок на сервер. Относитесь ко мне как к инопланетянину, который только что приземлился на планете, хотя он знает PHP и несколько методов оптимизации.
Я разрабатываю инструмент на PHP, который может привлечь довольно много пользователей, если он работает правильно. Однако, хотя я полностью способен разрабатывать программу, я почти ничего не понимаю, когда дело доходит до создания чего-то, что может иметь дело с огромным трафиком. Итак, вот несколько вопросов (не стесняйтесь также превратить этот вопрос в ветку ресурсов).
Базы данных
На данный момент я планирую использовать функции MySQLi в PHP5. Однако как мне настроить базы данных по отношению к пользователям и контенту? Действительно ли мне нужно несколько баз данных? На данный момент все перемешано в одну базу данных - хотя я рассматривал возможность распространения пользовательских данных в одну, фактического контента в другую и, наконец, основного контента сайта (мастеров шаблонов и т. Д.) В другую. Моя причина в том, что отправка запросов в разные базы данных облегчит их загрузку, поскольку одна база данных = 3 источника загрузки. Кроме того, будет ли это все еще эффективно, если они все были на одном сервере?
Кэширование
У меня есть система шаблонов, которая используется для создания страниц и замены переменных. Основные шаблоны хранятся в базе данных, и при каждом вызове шаблона вызывается его кэшированная копия (HTML-документ). На данный момент у меня есть два типа переменных в этих шаблонах - статическая переменная и динамическая переменная. Статические переменные - это, как правило, названия страниц, названия сайтов, которые меняются не часто; динамические переменные - это то, что меняется при каждой загрузке страницы.
Мой вопрос по этому вопросу:
Скажем, у меня есть комментарии к различным статьям. Что является лучшим решением: сохраняйте простой шаблон комментариев и визуализируйте комментарии (из вызова БД) при каждой загрузке страницы или сохраняйте кэшированную копию страницы комментариев в виде html-страницы - каждый раз, когда комментарий добавляется / редактируется / удаляется страница перечитана.
в заключение
У кого-нибудь есть какие-либо советы / указатели для запуска сайта с высокой нагрузкой на PHP. Я почти уверен, что это работоспособный язык - Facebook и Yahoo! дать ему большой приоритет - но есть ли опыт, который я должен остерегаться?