Масштабирование сайта электронной коммерции WP


Связанный с этим вопросом.

Любые рекомендации по инструментам, плагинам для оптимизации большого сайта электронной коммерции на WP. В настоящее время набрано 1000 предметов и еще 5000 предметов. Похоже, что оптимизация будет отличаться от стандартного блога, обслуживающего тысячи пользователей. Количество магазинов, разрабатываемых на WP, увеличивается, и объединение пакета оптимизаций может оказаться полезным.

ММ/RC

Author: Community, 2010-09-01

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. Вы также можете предварительно загрузить кэш для поиска, используя поведение поиска пользователей (через ваши журналы) и повторно получая эти запросы, когда вам нужно заполнить кэши.

 12
Author: bsr, 2010-09-01 23:04:21

Мне было любопытно узнать о моем собственном комментарии, и я немного почитал, вот где я нахожусь.

Во-первых, я бы попробовал Общий кэш W3. Кроме того, установите расширение APC PHP на свой сервер и настройте общий кэш W3 для его использования. Он будет использовать APC для кэширования объектов базы данных, PHP, даже поможет минимизировать ваши CSS и JS. Этого может быть достаточно. Особенно, если вы уже включили некоторый кэш MySQL. Общий кэш W3 также может работать с Memcache в качестве серверной части кэширования.

Для База данных, кэширующая запросы, очень полезна. Я нашел эту ссылку, и он объясняет, как он что-то сделал для своего блога MU. Цитирую:

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

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

Так что это довольно круто и очень поможет, так как сами продукты не сильно изменятся. Еще одна вещь, о которой упоминается в статье, - убедиться, что у вас достаточно памяти для хранения базы данных в оперативной памяти это значительно ускорит выполнение запросов.

Он также говорит о типах таблиц и использовании MyISAM поверх InnoDB для таблиц, в основном доступных только для чтения, хотя это его рассуждение немного ориентировано на MU, это может быть полезно.

В отношении настройки индексов. Если у вас их много, они могут замедлить вставку и занять больше места на диске. Но поскольку я не представляю, чтобы большое количество продуктов добавлялось регулярно, я думаю, что это приемлемо. И с диском пространство стоит дешево...

 1
Author: Ryan Gibbons, 2020-06-15 08:21:38