Cloudways и WooCommerce: от установки небольшого интернет-магазина до исключения корзины и оформления заказа из кеша

Cloudways и WooCommerce — интернет-магазин, который работает на приложении WordPress сервера Cloudways с установленным плагином WooCommerce. Чтобы проверить интернет-магазин небольшого бизнеса, WooCommerce установили на WordPress тестового сервера Vultr в Сеуле на 1 ГБ и довели дело до тестового заказа. Страницы корзины, оформления заказа и «Мой аккаунт» автоматически исключились из кеша, а время до первого байта страницы товара с кешем Breeze сократилось с 532,4 мс до 54,9 мс.
1️⃣ Установка WooCommerce на Cloudways
Кажется, что для интернет-магазина нужно создавать отдельное приложение, но магазин открывается, если добавить плагин WooCommerce в уже существующее приложение WordPress. На тестовом сервере тоже не создавали новое приложение, а установили плагин в имеющееся приложение WordPress.
Для установки к приложению подключились по SSH и выполнили wp-cli, но установить плагин можно и через меню добавления плагинов в админке WordPress.
wp plugin install woocommerce --activateInstalling the plugin...
Plugin installed successfully.
Activating 'woocommerce'...
Plugin 'woocommerce' activated.
Success: Installed 1 of 1 plugins.Установка и активация заняли 30 секунд, а папка плагина весит 72 МБ.
wp post list --post_type=page --fields=ID,post_title,post_name --format=csvID,post_title,post_name
7,Shop,shop
8,Cart,cart
9,Checkout,checkout
10,My account,my-account
11,Refund and Returns Policy,refund_returns
2,Sample Page,sample-page
3,Privacy Policy,privacy-policyПри активации WooCommerce создал пять страниц: «Магазин» (Shop), «Корзина» (Cart), «Оформление заказа» (Checkout), «Мой аккаунт» (My account) и страницу политики возврата.
2️⃣ Базовые настройки: страна продаж, валюта и способы оплаты
Хотя страницы созданы, сразу после установки магазин настроен на адрес в Калифорнии (США) и доллары США, поэтому корейский магазин начинает с того, что меняет страну продаж и валюту.
| Настройки | Сразу после установки | Новое значение |
|---|---|---|
| Страна продаж (Country / State) | Калифорния, США | Южная Корея |
| Валюта (Currency) | Доллар США (USD) | Южнокорейская вона (KRW) |
| Банковский перевод (Direct bank transfer) | Выкл. | Вкл. |
| Чек (Check payments) | Выкл. | Выкл. |
| Оплата при получении (Cash on delivery) | Выкл. | Выкл. |
У воны нет дробной части, поэтому [Number of decimals] меняют на 0 и сохраняют кнопкой [Save changes]. Сразу после установки было три способа оплаты — банковский перевод, чек и оплата при получении, и для тестового заказа включили только банковский перевод. На экране для этого нажимают [Enable] у [Direct bank transfer] в разделе [Take offline payments] на вкладке [Payments].
Оплаты картой нет в списке офлайн-платежей. После смены страны продаж на Южную Корею на экране [Payments] появляются Visa Acceptance Solutions и PayPal Payments с кнопкой [Install], и чтобы продавать по картам, устанавливают один из таких плагинов платёжных шлюзов.
3️⃣ Добавление товара и тестовый заказ: от корзины до заказа банковским переводом
Поступивший заказ ещё не значит, что оплата завершена. Заказ с банковским переводом хранится в статусе [On hold], пока не подтверждено поступление денег.
Тестовый товар добавлен с ценой 15 000 вон и запасом 10 штук, затем его положили в корзину и заказали банковским переводом — так же, как это сделал бы посетитель.
wp wc shop_order list --user=1 --fields=id,status,total,payment_method --format=csvid,status,total,payment_method
13,on-hold,15000,bacswp wc product get 12 --user=1 --fields=id,price,stock_quantity --format=csvField,Value
id,12
price,15000
stock_quantity,9Заказ записан со статусом on-hold и способом оплаты «банковский перевод» (bacs), а запас уменьшился с 10 до 9 в момент заказа, ещё до оплаты.
4️⃣ Исключение WooCommerce из кеша: адреса корзины, оформления заказа и «Мой аккаунт»
Кеш страниц подходит для страниц магазина и товаров, но не для корзины, оформления заказа и «Моего аккаунта», где содержимое у каждого посетителя своё. Убрать корзину из кеша — всё равно что заранее напечатать ценники на витрине, а чек на кассе печатать заново для каждого покупателя. Даже без включённого плагина кеширования WooCommerce отправлял для этих трёх страниц заголовки ответа, запрещающие кеширование.
curl -sI https://example.com/cart/ | grep -i cache-controlcache-control: no-cache, must-revalidate, max-age=0, privateКогда плагин кеширования Breeze, установленный вместе с приложением Cloudways, включили с настройками по умолчанию, поле исключаемых адресов на экране настроек было пустым, но в файле настроек Breeze эти три адреса были записаны в список исключений.
grep -A4 exclude_url wp-content/breeze-config/breeze-config.php 'exclude_url' =>
array (
0 => '/cart/*',
1 => '/checkout/*',
2 => '/my-account/*',С другого сервера в Сеуле каждый адрес запросили по 10 раз и измерили медиану времени до первого байта (TTFB); Varnish приложения был выключен.
| Адрес | Кеш выключен | Breeze включён |
|---|---|---|
| Магазин /shop/ | 484,7 мс | 55,2 мс |
| Товар /product/test-mug/ | 532,4 мс | 54,9 мс |
| Корзина /cart/ | 506,7 мс | 496,9 мс |
| Мой аккаунт /my-account/ | 507,4 мс | 377,0 мс |
С включённым Breeze страницы магазина и товара отвечали примерно за 55 мс, а корзина и «Мой аккаунт» каждый раз собирались PHP без кеша и отвечали за 377–497 мс.
5️⃣ Что проверено на тестовом сервере 1 ГБ: когда он не подходит небольшому магазину
Даже если страницы товаров ускорены кешем, корзину и оформление заказа PHP обрабатывает при каждом заказе. Этот тестовый сервер проверил установку, заказ и исключения из кеша только на одном товаре и одном тестовом заказе, и магазину, где с ростом заказов растёт число запросов к корзине и оформлению, стоит заодно изучить раздел Изменение размера сервера.
Стоит проверить и версию PHP. PHP 8.2.34 на тестовом сервере не дотягивает до рекомендации официальной документации WooCommerce (PHP 8.3 или новее), но установка и заказ работали.
На тестовом сервере Vultr в Сеуле на 1 ГБ установка WooCommerce заняла 30 секунд, тестовый заказ сохранился в статусе [On hold], а время до первого байта страницы товара с Breeze составило 54,9 мс против 496,9 мс у корзины. Следующий шаг — подключить плагин платёжного шлюза в тестовом режиме и снова провести тот же заказ уже с оплатой картой.
🔢 FAQ & рекомендуемые материалы
















ℹ️ О партнёрских ссылках
Материалы этого сайта содержат партнёрские ссылки. Если посетитель покупает товар или услугу по такой ссылке, сайт получает комиссию от продавца. При этом сумма, которую платит покупатель (при акционных скидках сумма снижается ↓), не увеличивается. Указанные цены, скидки и наличие актуальны на момент написания и могут отличаться, поэтому перед покупкой уточняйте их у продавца. Товары выбираются и оцениваются по нашим собственным критериям, а комиссия не влияет ни на порядок, ни на содержание обзоров.