Diffio: Попробовал пока только это - вижу 29 запросов, если включен cache и 65 если отключен.
У ядра WP без плагинов я вижу 10-11 запросов. Версия WP 2.7, кастомизированная собственноручно, на более новых версиях запросов может быть больше.
Diffio: Показывает 22-23 Мб - это много или считается нормальным? Спасибо.
В идеале чем меньше тем лучше. Пока минимум что я выжимал это 7.6 МБ без акселератора, но там серьезно "пострадали" исходники, т.к. я кастомизировал одну из версий WP и теперь работаю только с ней.
На мой взгляд, проще всего поставить акселератор на сервер, т.к. это избавляет от нужны ковыряться в коде WP. По опыту могу сказать что расход памяти у меня до его использования на WP был около 10МБ на 1 страницу, теперь не более 2-3 МБ.
Как правило, WP тормозит из за большой избыточности в переменных. Так сказать обратная сторона удобства. Чтобы примерно представлять сколько "всего интересного" WP держит в себе, распечатайте глобальные переменные в ознакомительных целях:
<? print_r ($GLOBALS); ?>
Сам по себе WP без плагинов не создает много запросов - не больше десятка. В WP есть функция, выводящая число запросов к базе, вставьте в footer.php Вашей темы для контроля:
<?php echo 'MySQL: '. get_num_queries(); ?>
Последние версии WP с плагинами у меня завешивали на 30МБ оперативы при загрузке 1 страницы.
Чтобы посмотреть что грузит систему, лично я использую вот что:
Функция выводит текущее потребление памяти. Пробуйте отключать плагины и следить за цифрами.
А вообще, если есть возможность, попробуйте поставьте себе на VPS E-accelerator. Вещь хорошая, ставится не сложно, обеспечивает кеширование на уровне сервака, может снизить потребление RAM в 20 раз.
ТС, а Вам не кажется, что все дело в некорректности запроса?
Вы попробуйте в PHPMyAdmin выбрать:
SELECT search, COUNT(search) as count FROM search
и посмотрите на результат.
У меня при похожем запросе выбралась только 1 строка со значением выбираемого поля (в Вашем случае search) и числом полей. Если убрать COUNT, то запрос проходит нормально.
Видимо MySQL функция COUNT корректно работает только при выборке 1 строки, если же, априоре, число строк может быть больше, чем 1, такой запрос не совсем корректен.
ТС - а Вы верстаете руками или программой? Если программой, то советую попробовать сверстать пару страниц вручную, так проще находить ошибки. Если руками - тогда непонятно, почему Вы не обнаружили это сами.
И еще. У Вас часть кода, которая по идее должна быть одинаковой на всех страницах, отличается. Может стоит выделить шапку и подвал, вынести в отдельный файл и через php подключать ко всем файлам?
admak - мой вариант это общий случай. Принудительное завершение цикла - это уже уточнение условия задачи ;)
Ваш вариант считаю замечательным, поскольку занимает всего 2 строки, но сам привык работать с массивами, поэтому такая реализация и пришла первой в голову.
Моя логика: как правило в $_SERVER['HTTP_USER_AGENT'] содержится текст вида:
"Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.6.30 Version/10.63"
Проверка производится по совпадению с названием броузера (в данном случае Opera). Совпадение может быть лишь с одним из браузеров в списке, либо ни с каким из браузеров, поэтому цикл в данном случае наиболее удобен, нежели многократные конструкции if (...).
Дальше проверяем через цикл какой броузер у пользователя и в зависимости от этого инклюдим то что нужно:
foreach ($array AS $key=>$value)
{
if (substr_count ($_SERVER['HTTP_USER_AGENT'], $key) > 0)
include $value;
}
Функция substr_count вычисляет количество появлений подстроки, т.е. число появлений значения $key в $_SERVER['HTTP_USER_AGENT']. Если совпадения есть, значит инклюдим нужный файл или просто через echo выводим переменную.
Основное неудобство сайта на html заключается в том, чо при мало-мальском изменении в навигации, добавлении новых важных страниц или, скажем, смене контактов, висящих в футере каждой страницы придется перелопатить все 400 страниц. CMS или просто шаблонная система на рнр позволит это сделать путем редактирования 1 файла.
Перенести с html на cms можно очень легко, сохранив структуру урлов. Я в свое время именно по этой причине и начал изучать рнр.
Попробовал пока только это - вижу 29 запросов, если включен cache и 65 если отключен.
У ядра WP без плагинов я вижу 10-11 запросов. Версия WP 2.7, кастомизированная собственноручно, на более новых версиях запросов может быть больше.
Показывает 22-23 Мб - это много или считается нормальным? Спасибо.
В идеале чем меньше тем лучше. Пока минимум что я выжимал это 7.6 МБ без акселератора, но там серьезно "пострадали" исходники, т.к. я кастомизировал одну из версий WP и теперь работаю только с ней.
На мой взгляд, проще всего поставить акселератор на сервер, т.к. это избавляет от нужны ковыряться в коде WP. По опыту могу сказать что расход памяти у меня до его использования на WP был около 10МБ на 1 страницу, теперь не более 2-3 МБ.
Как правило, WP тормозит из за большой избыточности в переменных. Так сказать обратная сторона удобства. Чтобы примерно представлять сколько "всего интересного" WP держит в себе, распечатайте глобальные переменные в ознакомительных целях:
Сам по себе WP без плагинов не создает много запросов - не больше десятка. В WP есть функция, выводящая число запросов к базе, вставьте в footer.php Вашей темы для контроля:
Последние версии WP с плагинами у меня завешивали на 30МБ оперативы при загрузке 1 страницы.
Чтобы посмотреть что грузит систему, лично я использую вот что:
Функция выводит текущее потребление памяти. Пробуйте отключать плагины и следить за цифрами.
А вообще, если есть возможность, попробуйте поставьте себе на VPS E-accelerator. Вещь хорошая, ставится не сложно, обеспечивает кеширование на уровне сервака, может снизить потребление RAM в 20 раз.
ТС, а Вы wp-config.php случайно в Блокноте не правили? У меня такое вылазило аккурат после правки конфига Блокнотом.
ТС, а Вам не кажется, что все дело в некорректности запроса?
Вы попробуйте в PHPMyAdmin выбрать:
и посмотрите на результат.
У меня при похожем запросе выбралась только 1 строка со значением выбираемого поля (в Вашем случае search) и числом полей. Если убрать COUNT, то запрос проходит нормально.
Видимо MySQL функция COUNT корректно работает только при выборке 1 строки, если же, априоре, число строк может быть больше, чем 1, такой запрос не совсем корректен.
В 10-й опере на Странице 2, а в ИЕ косяк в меню сверху виден на всех страницах, кроме "Взрывные клапаны".
ТС, Вы бы код меню сравнили на разных страницах... Начало кода - 42 строка.
Это отображается красиво в ИЕ, Файрфоксе и Опере:
<td width="307" class="head_l"></td>
<td><a href="http://www.btsm-kompensator.ru"><div class="box23"><b>Главная</b></div></a></td>
<td><a href="news.html"><div class="box24"><b>Новости</b></div></a></td>
<td><a href="zakaz.html"><div class="box25"><b>Заказ</b></div></a></td>
<td><a href="contact.html"><div class="box26"><b>Контакты</b></div></a></td>
<td width="50%" background="images/head_r.png"></td>
</tr>
А вот это нет:
<td width="350" class="head_l"></td>
<td width="125"><a href="http://www.btsm-kompensator.ru"><div class="box23"><b>Главная</b></div></a></td>
<td width="125"><a href="news.html"><div class="box24"><b>Новости</b></div></a></td>
<td width="125"<a href="zakaz.html"><div class="box25"><b>Заказ</b></div></a></td>
<td width="125"><a href="contact.html"><div class="box26"><b>Контакты</b></div></a></td>
<td width="360" background="images/head_r.png"></td>
</tr>
ТС - а Вы верстаете руками или программой? Если программой, то советую попробовать сверстать пару страниц вручную, так проще находить ошибки. Если руками - тогда непонятно, почему Вы не обнаружили это сами.
И еще. У Вас часть кода, которая по идее должна быть одинаковой на всех страницах, отличается. Может стоит выделить шапку и подвал, вынести в отдельный файл и через php подключать ко всем файлам?
admak - мой вариант это общий случай. Принудительное завершение цикла - это уже уточнение условия задачи ;)
Ваш вариант считаю замечательным, поскольку занимает всего 2 строки, но сам привык работать с массивами, поэтому такая реализация и пришла первой в голову.
Orangesoda - предложите Ваш вариант :)
Моя логика: как правило в $_SERVER['HTTP_USER_AGENT'] содержится текст вида:
Проверка производится по совпадению с названием броузера (в данном случае Opera). Совпадение может быть лишь с одним из браузеров в списке, либо ни с каким из браузеров, поэтому цикл в данном случае наиболее удобен, нежели многократные конструкции if (...).
Я так понял идея такая: если в $_SERVER['HTTP_USER_AGENT'] есть название какого-то броузера, то должен выводиться или инклюдится текст.
Самое простое что приходит на ум это сделать массив где ключ - название броузера, а значение - либо переменная, либо файл который надо инклюдить.
Пример:
"Chrome" => "chrome.php",
"Safari" => "safari.php",
"Opera" => "opera.php"
);
Дальше проверяем через цикл какой броузер у пользователя и в зависимости от этого инклюдим то что нужно:
{
if (substr_count ($_SERVER['HTTP_USER_AGENT'], $key) > 0)
include $value;
}
Функция substr_count вычисляет количество появлений подстроки, т.е. число появлений значения $key в $_SERVER['HTTP_USER_AGENT']. Если совпадения есть, значит инклюдим нужный файл или просто через echo выводим переменную.
Основное неудобство сайта на html заключается в том, чо при мало-мальском изменении в навигации, добавлении новых важных страниц или, скажем, смене контактов, висящих в футере каждой страницы придется перелопатить все 400 страниц. CMS или просто шаблонная система на рнр позволит это сделать путем редактирования 1 файла.
Перенести с html на cms можно очень легко, сохранив структуру урлов. Я в свое время именно по этой причине и начал изучать рнр.
Неужели сам Садовский темы палит )))