Что лучше?Дополнительный вызов базы данных или сгенерированный файл PHP? - PullRequest
1 голос
/ 17 сентября 2010

Я хочу добавить статическую информацию, связанную со строковыми ключами, на все мои страницы.Отдельные страницы PHP используют часть этой информации, отфильтрованной по строке запроса.Какой подход лучше добавить эту информацию?Сгенерируйте файл PHP размером 100 КБ (или больше, если потребуется дополнительная информация позже) со связанным массивом или добавьте другую таблицу БД с этой информацией и запросом, который?

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

Что дешевле, если имеется большое количество страниц?Загрузка файла PHP или дополнительный вызов БД?

Ответы [ 4 ]

2 голосов
/ 17 сентября 2010

Если не показано, что это действительно узкое место (будь то файл php или запрос к базе данных), вы должны выбрать вариант, который лучше поддерживать.

Я предполагаю, что это второй вариант,Сохраните его в базе данных.

0 голосов
/ 17 сентября 2010

Я бы не назвал эту информацию "статической".
Для меня это просто обычный вызов, чтобы получить купольную информацию из базы данных, среди других звонков, выполняемых для сборки всей страницы. Чего мне не хватает?

И я согласен с Деннисом, что все оптимизации должны основываться на реальных потребностях и профилировании. В противном случае его эффект может быть противоположным.

Если вы хотите использовать некоторое кэширование, рассмотрите возможность использования условного GET для всей страницы.

0 голосов
/ 17 сентября 2010

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

Однако, как отметили другие, база данных - это лучшее место для хранения этого материала, поскольку его гораздо проще поддерживать (это должно быть вашим приоритетом для начала).

Обеспечив простоту обслуживания и работоспособности приложения, если вам потребуется повышение производительности, то общепринятой практикой будет кэширование этих статических данных в хранилище ключей / значений в памяти, например memcached . Это даст вам быстрый доступ к вашим статическим значениям (для большинства запросов).

0 голосов
/ 17 сентября 2010

Хранение в базе данных - гораздо лучший план. С помощью базы данных вы можете улучшить ограничения данных, упростить перекрестные ссылки с другими данными и создать прочные связи. Это может вам понадобиться, а может и не понадобиться, но в конечном итоге это гораздо более гибкое решение.

Для чего используются данные? Мне интересно, могут ли данные, которые вам нужны, храниться в переменной / cookie сеанса после того, как они извлечены из базы данных, что позволит вам не запрашивать БД при рендеринге каждой страницы.

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