Какой из них является менее дорогостоящим с точки зрения ресурсов? - PullRequest
0 голосов
/ 15 июня 2009

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

Я реализую частичное кэширование, которое записывает файлы .txt для различных модулей сайта и обновляет их по требованию. Я сталкивался с тем, что он не может оставаться статичным для всех пользователей, поэтому файл .txt, записанный на HD, нужно будет изменить на лету через php.

Что делается через

flush();
ob_start();
include('file.txt');
$contents = ob_get_clean();

Затем я изменяю HTML-код в переменной $ contents и выводю его для разных пользователей.

Кроме того, я могу оставить все как есть, который выполняет запрос mysql, который запрашивает небольшую таблицу с именами категорий (около 13 из них).

Какой из них дешевле? Запускать запрос каждый раз .... или делать это с помощью метода, который я опубликовал выше, чтобы внедрить HTML-код на лету в статический файл .txt?

Ответы [ 5 ]

2 голосов
/ 15 июня 2009

Чтение файла (сохранение в очень странных настройках) будет в несколько раз быстрее, чем запрос к БД (без сетевого взаимодействия и т. Д.), Но разница вряд ли будет ощутимой - просто попробуйте и посмотрите, сможете ли вы ее измерить!

1 голос
/ 15 июня 2009

Где ваше узкое место в производительности?

Если вы не знаете узкого места, вы не сможете дать разумную оценку оптимизации.

Соберите несколько метрик и оптимизируйте соответственно.

1 голос
/ 15 июня 2009

Оптимизируйте ваши запросы в первую очередь! Затем используйте memcache или аналогичную систему кэширования для данных, к которым часто обращаются, и затем вы можете добавить кеширование файлов. Мы используем все три вместе, и это работает очень гладко. Небольшие оптимизированные запросы не так уж и плохи. Если ваша БД находится на локальном сервере - сеть не проблема. И не забудьте использовать кеш запросов MySQL (я думаю, вы используете MySQL).

0 голосов
/ 15 июня 2009

Вот шаблоны, которые работают для меня при рефакторинге кода сайта PHP / MySQL.

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

После индексов самая важная вещь для работы - это параметры конфигурации кэширования.

Никогда не иметь запросов в циклах.

Перемещение запросов к базе данных в файлы никогда не было полезной стратегией, тем более что это часто приводит к нарушению целостности вашего запроса.

Алекс и остальные правы насчет тестирования. Если ваши страницы заметно медленные, то они медленные по причине (или причинам) - даже не начинайте ничего менять, пока не узнаете причины и не сможете измерить последствия ваших изменений. Рефакторинг путем угадывания всегда является проигрышной стратегией, особенно когда (как в вашем случае) вы добавляете сложность.

0 голосов
/ 15 июня 2009

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

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