SDWSKi.COM
SDWSKi Cache. Плагін кэшавання для WordPress

SDWSKi Cache. Плагін кэшавання для WordPress

Тэрмін 5 тыдняў
Мова Руская, англійская
Год 2026
Бюджэт да 5 000 €
Пра
праект
убудовы wordpress
Бюджэт
Флагман
да 5 000 €
Індывідуальная распрацоўка прэміум-класа пад ключ

Убудова кэшавання старонак для WordPress з рэжымам інтэрнэт-крамы. SDWSKi Cache аддае гатовыя HTML-старонкі яшчэ да загрузкі WordPress, захоўвае іх адразу ў сціснутым выглядзе і карэктна абыходзіць кэш там, дзе старонка залежыць ад канкрэтнага наведвальніка: кошык, асабісты кабінет, каментарыі, закрытыя запісы.

Гэты праект — GPL-плагін старонкавага кэша, напісаны на аснове стандартных правіл кэшавання ў сістэме WordPress: аснова прынцыпаў кэшавання захавана, а ядро выдачы, рэжым WooCommerce, інтэрфейс і абарона ад канфліктаў цалкам напісаны з нуля.

Задача

Стандартныя кэш-плагіны добра працуюць у блогах і дрэнна — у крамах. Тыповыя праблемы, якія я хацеў вырашыць:

  • у кэш трапляе старонка з чужым лічыльнікам кошыка;
  • у картцы тавару застаецца стары астатак;
  • шматмоўны сайт аддае наведвальніку старонку не на яго мове;
  • пры збоі аптымізацыі (мініфікацыя, аб’яднанне файлаў) карыстальнік бачыць пусты экран;
  • у адмінцы поўна рэкламы і спасылак на старонні сайт.

Архітэктура

Плагін складаецца з трох узроўняў, кожны з якіх вырашае сваю частку задачы.

1. Загрузчык (sdwski-cache.php). Вырашае толькі адно: ці можна запускаць рухавік. Калі на сайце ўжо актыўны арыгінальны плагін або іншая копія, загрузчык нічога не падключае, не рэгіструе хукі і паказвае апавяшчэнне з кнопкай «Адключыць і запусціць». Усе класы, функцыі і канстанты рухавіка маюць уласныя прэфіксы, таму памылкі кшталту «Cannot redeclare» выключаны, у якім бы парадку WordPress ні загрузіў плагіны.

2. Рухавік (sdwski-engine.php, inc/). Класічны ўзровень: генерацыя і ачыстка кэша, мініфікацыя і аб'яднанне CSS/JS, папярэдняя загрузка, правілы выключэнняў, CDN (у тым ліку Cloudflare), ачыстка Varnish, модуль бяспекі, планіроўшчык ачысткі, WP-CLI. Тут жа перахопліваецца вывад старонкі праз output buffer.

3. Turbo-ўзровень (inc/turbo/). Мой асноўны ўнёсак. Гэта drop-in advanced-cache.php, які WordPress падключае раней за тэму і плагіны, і ядро turbo-core.php, якое кіруе яго наладамі, статусам і ачысткай.

Як працуе аддача з drop-in

Парадак праверак у advanced-cache.php выбудаваны так, каб пры любым сумненні перадаць запыт WordPress:

  1. Апрацоўваюцца толькі запыты GET.
  2. Запыты бота папярэдняй загрузкі заўсёды накіроўваюцца ў WordPress, каб старонка была створана або абноўлена.
  3. Хост і схема (http/https) павінны супадаць з адрасам сайта, што ахоплівае варыянты з www і без яго.
  4. Калі ў cookie ёсць прыкметы карыстальніка, які ўвайшоў у сістэму, каментатара, абароненага паролем запісу або сесіі крамы, наведвальнік атрымлівае жывую старонку. Спіс можна пашырыць уласнымі назвамі cookie.
  5. Толькі пасля гэтага ў кэшы шукаецца гатовы файл.

Калі файл знойдзены, адказ фарміруецца без запуску WordPress. У загалоўках перадаюцца Vary: Accept-Encoding, ETag і X-ruzi-Turbo: HIT, які зручна правяраць у браўзеры або праз curl -I.

Папярэдне сціснутыя копіі і ўмоўныя запыты

Сцісканне выконваецца адзін раз пры стварэнні старонкі, а не пры кожным запыце. Побач з index.html ляжаць index.html.gz і, калі на серверы ёсць пашырэнне brotli, index.html.br. Drop-in правярае загаловак Accept-Encoding і вяртае адпаведны варыянт. На ўмоўны запыт з супалым ETag адказвае 304 без чытання файла.

Пры ачыстцы кэша выдаляюцца ўсе варыянты старонкі: звычайны, gzip і brotli, а таксама пастаронкавая навігацыя і копіі паводле моў. Гэта абараняе ад «асірацелых» сціснутых файлаў, якія інакш перажылі б выдаленую старонку.

Рэжым інтэрнэт-крамы (WooCommerce)

Самая аб'ёмная частка працы. Правілы дублююцца на трох узроўнях: у .htaccess, у drop-in і ў рухавіку, таму абарона не залежыць ад аднаго пераключальніка.

ЗадачаРашэнне
Чужы кошык у кэшыНаведвальнік з таварамі ў кошыку або сесіяй крамы заўсёды атрымлівае жывую старонку, яго запыт не стварае агульны кэш
Кошык, афармленне, кабінетГэтыя старонкі ўвогуле не кэшуюцца
Састарэлы астатак і цанаЗмяненне тавару, астатку, цаны, статусу або заказу ачышчае кэш. Рэжым паводле змаўчання: увесь кэш. Працуюць хукі woocommerce_update_product, woocommerce_order_status_changed і transition_post_status
Імпарты ў абыход WooCommerceМаксімальны ўзрост кэша, прадвызначана 3 гадзіны
Лічыльнік кошыка ў шапцыУ кэшы заўсёды нуль, рэальная колькасць падстаўляецца невялікім скрыптам паводле зададзенага CSS-класа. На серверы скід да нуля распазнае і фарматы «(3)», «3 шт.»
Рэшткі ў картцыРадок з рэшткамі запытваецца нанова пры кожным праглядзе старонкі тавару і каталога
Міні-кошыкБлок цалкам абнаўляецца праз фрагменты WooCommerce
Цэны, якія залежаць ад валюты або групыНеабавязковы рэжым «без кэша» для такіх старонак

Усе налады крамы вынесены на асобную ўкладку «WooCommerce». Класы элементаў можна ўводзіць без кропкі, напрыклад cart-count.

Многоязычность

Кэш вядзецца асобна для кожнай мовы, таму наведвальнік з англійскай версіяй не атрымае кэш рускай і наадварот. Плагін SDWSKi Cache сумяшчальны з плагінамі шматмоўнасці. У першую чаргу 100% гарантаваная сумяшчальнасць з плагінам ШІ-перакладу SDWSKi Перакласці.

Адмоваўстойлівасць

  • Адкат пры збоі аптымізацыі. Буфер вываду зваротнага выкліку абаронены: калі мініфікацыя або аб'яднанне файлаў завяршыліся памылкай, вяртаецца зыходная старонка.
  • Drop-in можна выдаліць у любы момант. Тады WordPress проста працягвае працаваць як звычайна, пра гэта сказана ў самім загалоўку файла.
  • Старонка стану Turbo паказвае па пунктах, ці ўсё наладжана: drop-in, правы, .htaccess, даступнасць brotli.
  • Бяспечнае выдаленне. Плагін не выдаляе агульныя даныя, пакуль на сайце застаецца іншая копія рухавічка.

Што яшчэ ёсць унутры

Папярэдняя загрузка кэша паводле раскладу праз WP-Cron, мініфікацыя HTML/CSS/JS, аб’яднанне файлаў, адкладзеная загрузка выяў, правілы выключэнняў, ачыстка кэша пэўных старонак, налады для Nginx і Varnish, інтэграцыі з CDN, кэшаванне ў браўзеры, адключэнне emoji, WP-CLI. Інтэрфейс і падрабязная ўкладка «Інструкцыя» перакладзены на рускую мову.

Стэк

PHP, WordPress Plugin API (хукі, WP-Cron, output buffering, drop-in advanced-cache.php), правілы Apache .htaccess, JavaScript і CSS для інтэрфейсу адміністратара і «жывых» элементаў крамы, gettext (.pot, .po, .mo) для лакалізацыі.

Усталяванне

  1. Скапіруйце папку sdwski-cache ў /wp-content/plugins/ і актывуйце плагін.
  2. У меню «SDWSKi Cache» уключыце «Cache System» і захавайце.
  3. Адкрыйце «Налады → SDWSKi Cache: Turbo» і пераканайцеся, што ўсе пункты стану зялёныя.
  4. Праверце вынік: адкрыйце старонку ў прыватным акне і знайдзіце загаловак X-ruzi-Turbo: HIT.

История версий

  • 1.5.3-turbo.10 — асобная ўкладка WooCommerce, «жывыя» рэшткі, «жывы» міні-кошык.
  • 1.5.3-turbo.9 — абарона кошыка і рэшткаў цяпер заўсёды ўключана пры актыўным WooCommerce, ачыстка кэша пры любых зменах тавару і заказу, максімальны тэрмін захоўвання кэша — 3 гадзіны.
  • 1.5.3-turbo.8 — лічыльнік кошыка падстаўляецца скрыптам, выпраўлена захаванне налад рэжыму крамы.
  • 1.5.3-turbo.2 — абарона ад канфлікту з арыгінальным плагінам, уласная папка, укладка «Інструкцыя».
  • 1.5.3-turbo.1 — рэжым крамы, drop-in, папярэдне сціснутыя старонкі, ETag і 304, новы інтэрфейс, рэклама выдалена.

Ліцэнзія і паходжанне

Праект распаўсюджваецца паводле GPLv2 або навейшай версіі. Ён заснаваны на адкрытай GPL-убудове кэшавання старонак: зыходны код належыць яго аўтарам, а мае змены і дапаўненні аформлены асобна і апісаны вышэй.