Масштабирование сайта электронной коммерции WP
Связанный с этим вопросом.
Любые рекомендации по инструментам, плагинам для оптимизации большого сайта электронной коммерции на WP. В настоящее время набрано 1000 предметов и еще 5000 предметов. Похоже, что оптимизация будет отличаться от стандартного блога, обслуживающего тысячи пользователей. Количество магазинов, разрабатываемых на WP, увеличивается, и объединение пакета оптимизаций может оказаться полезным.
ММ/RC
2 answers
Я разработал сайт электронной коммерции на 55 тыс. продуктов с использованием Wordpress с плагином Shopp и могу поделиться тем, что я сделал с MySQL, чтобы повысить производительность, YMMV и некоторые (или все) из них могут не относиться к вашей ситуации.
Определите, насколько вам нужно увеличить буферы/кэши, посмотрев на вывод команды sql "показать статус" - есть инструменты, которые улучшают этот вывод, который может быть полезен, я часто просто использую phpmyadmin, чтобы получить представление. http://blog.mysqltuner.com / также является удобным ресурсом и утилитой.
Убедитесь, что ваш кэш запросов включен и что он достаточно велик, чтобы иметь очень низкое количество пробелов в памяти. Убедитесь, что количество считываемых ключей не слишком велико (это относительное значение), увеличение key_buffer_size может помочь в этом. Убедитесь, что количество создаваемых временных таблиц невелико, уменьшите это число, увеличив размер tmp_table_size.
Включите медленный журнал запросов и медленно регистрируйте запросы, повторите эти запросы вручную с помощью инструкций explain, добавьте индексы, измените типы столбцов и т. Д. По мере необходимости. Для одного запроса мы получали безумные инструкции explain (как при сравнении многих, гораздо большего количества строк, чем "должно" было быть), обновление до более новой версии MySQL привело к тому, что тот же запрос был намного лучше оптимизирован (и намного быстрее) самим MySQL.
Если вы используете полнотекстовую индексацию, я не верю, что таблицы InnoDB - это вариант - просто не обновляйте продукты во время вашего занятого раз. Если ваш пакет электронной коммерции поддерживает его, вы можете минимизировать сбои в работе клиентов (производительность или иное), внеся изменения на промежуточном сервере, а затем переместив только таблицы продуктов с помощью дампа со стадии и загрузив их в производство - однако это не будет работать без дополнительной работы для остальной части вашей установки Wordpress.
Если дизайн вашего сайта и UX могут поддерживать его, направляя пользователей в режим "просмотра", а не в режим "поиска" (например, щелчок вокруг сайта против ввода поисковых запросов в поле поиска) может помочь вам воспользоваться преимуществами очень простого кэширования на уровне базы данных и Wordpress.
Предварительная загрузка кэшей - простое кэширование, такое как кэш запросов и кэширование на уровне Wordpress, также может быть предварительно загружено с помощью wget. Вы также можете предварительно загрузить кэш для поиска, используя поведение поиска пользователей (через ваши журналы) и повторно получая эти запросы, когда вам нужно заполнить кэши.
Мне было любопытно узнать о моем собственном комментарии, и я немного почитал, вот где я нахожусь.
Во-первых, я бы попробовал Общий кэш W3. Кроме того, установите расширение APC PHP на свой сервер и настройте общий кэш W3 для его использования. Он будет использовать APC для кэширования объектов базы данных, PHP, даже поможет минимизировать ваши CSS и JS. Этого может быть достаточно. Особенно, если вы уже включили некоторый кэш MySQL. Общий кэш W3 также может работать с Memcache в качестве серверной части кэширования.
Для База данных, кэширующая запросы, очень полезна. Я нашел эту ссылку, и он объясняет, как он что-то сделал для своего блога MU. Цитирую:
Кэш запросов - это отличная небольшая функция в MySQL, где он хранит - в выделенной области в основной памяти - любые результаты запроса для таблицы, которая в последнее время не изменялась.
То есть, предполагая, что поступает запрос на извлечение определенной строки в таблице - и эта таблица в последнее время никоим образом не изменялась - и кэш имеет не заполнен, требующий очистки/очистки - запрос/данные могут быть удовлетворены из этого кэша. Основным преимуществом здесь, конечно, является удовлетворение запроса - базе данных не нужно переходить на диск (который, как правило, является самой медленной частью системы) и может быть немедленно удовлетворен.
Так что это довольно круто и очень поможет, так как сами продукты не сильно изменятся. Еще одна вещь, о которой упоминается в статье, - убедиться, что у вас достаточно памяти для хранения базы данных в оперативной памяти это значительно ускорит выполнение запросов.
Он также говорит о типах таблиц и использовании MyISAM поверх InnoDB для таблиц, в основном доступных только для чтения, хотя это его рассуждение немного ориентировано на MU, это может быть полезно.
В отношении настройки индексов. Если у вас их много, они могут замедлить вставку и занять больше места на диске. Но поскольку я не представляю, чтобы большое количество продуктов добавлялось регулярно, я думаю, что это приемлемо. И с диском пространство стоит дешево...