it-swarm.xyz

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

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

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

MM/RC

5
RealityCramp

Я разработал сайт электронной коммерции с продуктом 55k с использованием Wordpress с плагином Shopp и могу поделиться тем, что я сделал с MySQL, чтобы добиться лучшей производительности, YMMV и некоторые (или все) из них могут не подходить для вашей ситуации.

Определите, насколько вам нужно увеличить буферы/кеши, посмотрев выходные данные команды sql "show status" - есть инструменты, которые довольно полезны для этого вывода, что может быть полезно, я часто просто использую phpmyadmin, чтобы получить представление. http://blog.mysqltuner.com/ это удобный ресурс и утилита тоже.

Убедитесь, что кеш запросов включен и достаточно большой, чтобы иметь очень низкое число пун в памяти. Убедитесь, что количество считываний ключей не слишком велико (это относительное значение), и увеличение key_buffer_size может помочь в этом. Убедитесь, что количество создаваемых временных таблиц невелико, уменьшите это число, увеличив tmp_table_size.

Включите медленный журнал запросов и запишите медленные запросы, повторно запустите эти запросы вручную с помощью операторов объяснения, добавьте индексы, измените типы столбцов и т.д., Если необходимо. Для одного запроса мы получали безумные операторы объяснения (как при сравнении многих, намного больше строк, чем должно было быть), обновление до более новой версии MySQL привело к тому, что этот же запрос был намного лучше оптимизирован (и намного быстрее) MySQL сам.

Если вы используете полнотекстовое индексирование, я не верю, что таблицы InnoDB являются опцией - просто не обновляйте продукты во время вашего загруженного времени. Если ваш пакет электронной коммерции поддерживает его, вы можете свести к минимуму сбои клиентов (производительность или иное), внеся изменения на промежуточный сервер, а затем переместившись только на таблицы продуктов с дампом со стадии и загрузкой в ​​производство - этоне будетработать без дополнительной работы для остальной части вашей установки Wordpress.

Если ваш дизайн сайта и UX могут поддерживать его, то пользователи могут переключиться в режим "просмотра" вместо режима "поиска" (например: щелчок по сайту или ввод поисковых запросов в поле поиска) может помочь вам воспользоваться некоторой очень простой базой данных. кеширование уровня и уровня Wordpress.

Предварительная загрузка кешей - простое кеширование, такое как кеширование запросов и кеширование на уровне Wordpress, также может быть предварительно загружено путем паутинга вашего сайта с помощью wget. Вы также можете предварительно загрузить кеш для поиска, используя поведение поиска пользователя (через ваши логи) и повторно получая эти запросы, когда вам нужно заполнить кеши.

11
bsr

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

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

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

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

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

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

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

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

1
Ryan Gibbons