Как да автоматизираме кеширането на голям онлайн магазин без да „счупим“ сървъра: Реален опит от казус с клиент на PR22A

Скритият враг на скоростта

В света на мебелния бизнес наличностите и цените се променят постоянно. Но ако имате хиляди продукти, ръчното чистене на кеша след всяка актуализация е непосилно, а автоматизираното – често води до претоварване на хостинга. В тази статия ще ви покажем как оптимизирахме процеса за наш клиент, използвайки LiteSpeed Cache, WP-CLI и малко „сървърна магия“.

Проблемът: Пикове в натоварването и 100% CPU

Честото чистене на кеша (на всеки 2-3 часа) е нож с две остриета. От една страна, клиентите виждат актуални данни. От друга, веднага след чистенето, сървърът трябва да генерира хиляди страници наново. При нашия клиент това доведе до:

  • CPU Usage от 100%, което забавяше сайта за реалните купувачи.
  • Timeout грешки (cURL error 28), защото сървърът не успяваше да обработи заявките навреме.
  • Прекъснати процеси, които оставяха части от сайта некеширани.

Решението: Интелигентна автоматизация в 3 стъпки

  1. Използване на PHP-CLI за „чиста“ работа

Вместо да разчитаме на стандартния WordPress Cron, който зависи от посещенията, настроихме системна крон задача. Ключът тук беше използването на директния път към PHP-CLI на сървъра, за да избегнем CGI конфликти.

  1. Приоритизиране с командата nice

За да не позволяваме на автоматичните процеси да пречат на клиентите, използвахме Linux командата /usr/bin/nice -n 19. Тя инструктира сървъра да изпълнява чистенето с най-нисък приоритет – т.е. само когато има свободен ресурс.

  1. Шахматно разположение (Time Offsetting)

Една от най-големите грешки е стартирането на чистенето и „подгряването“ (Crawler) едновременно. Настроихме ги със застъпване:

  • Час 00:00: Пълно изчистване на кеша.
  • Час 00:20: Стартиране на Crawler-а (когато сървърът вече е спокоен).

Резултатът: Работещо решение

След фините настройки на интервалите за обхождане (Crawl Interval) и увеличаване на лимита за натоварване (Server Load Limit), постигнахме:

  • Зелена зона на сървърните ресурси (CPU под 60%).
  • 100% автоматизация – без нужда от ръчна намеса.
  • Светкавичен сайт за всеки потребител благодарение на предварително „подгретия“ кеш.

Техническото „Cheat Sheet“ (Финалната формула)

За тези, които искат да го приложат веднага, ето работещата крон задача за cPanel:

За изчистване на кеша (на всеки 3 часа): 0 */3 * * * /usr/bin/nice -n 19 /opt/cpanel/ea-php83/root/usr/bin/php -d memory_limit=256M /usr/local/bin/wp litespeed-purge all –path=/home/potrebitel/public_html –allow-root > /home/potrebitel/lscache_log.txt 2>&1

За Crawler-а (20 минути по-късно): 20 */3 * * * /usr/bin/nice -n 19 /opt/cpanel/ea-php83/root/usr/bin/php /usr/local/bin/wp litespeed-crawler run –path=/home/potrebitel/public_html –allow-root >/dev/null 2>&1

Вашият магазин нуждае ли се от „интелигентно“ кеширане?

Ако отговорите с „ДА“ на повече от два от тези въпроси, вероятно губите продажби заради технически несъвършенства:

  1. Актуализирате ли често продуктите си? (цени, наличности, нови модели, вариации)
  2. Забелязвате ли „бавно“ зареждане на страници, веднага след като сте изчистили кеша ръчно?
  3. Сайтът ви съдържа ли над 500 уникални URL адреса? (продукти, категории, филтри)
  4. Виждали ли сте някога грешка „508 Resource Limit Reached“ в панела на вашия хостинг?
  5. Имате ли висок процент на „Bounce Rate“ (отпадане на потребители) в категориите с много продукти?

Технологията в услуга на бизнеса

Оптимизацията на един онлайн магазин не приключва с неговия дизайн и просто работеща количка. Тя е „под капака“ – в правилната комуникация между софтуера и сървъра. В PR22A вярваме, че автоматизацията е ключът към мащабирането. Когато крон задачите работят правилно, вие не просто пестите време – вие гарантирате на вашите клиенти безпроблемно пазаруване, а на сървъра си – достатъчен ресурс за обслужване на заявките от сайта ви.

Ако имате проблем със скоростта на вашия WordPress сайт, попълнете нашата форма и ние ще се свържем с вас, за да разгледаме индивидуално всеки казус!

    Телефон за връзка:

    E-mail:

    office@pr22a.eu