SDWSKi.COM
SDWSKi Cache. WordPress podėlio papildinys

SDWSKi Cache. WordPress podėlio papildinys

Terminas 5 savaitės
Kalba Rusų, anglų
Metai 2026
Biudžetas iki 5 000 €
Apie
projektą
WordPress įskiepiai
Biudžetas
Flagmanas
iki 5 000 €
Individualus aukščiausios klasės sprendimas iki rakto

WordPress puslapių talpyklos įskiepis su internetinės parduotuvės režimu. SDWSKi Cache pateikia paruoštus HTML puslapius dar prieš įkeliant WordPress, iš karto saugo juos suglaudintu formatu ir išjungia podėlį ten, kur puslapio turinys priklauso nuo konkretaus lankytojo: pirkinių krepšelyje, asmeninėje paskyroje, komentaruose ir privačiuose įrašuose.

Šis projektas – GPL puslapių talpyklos papildinys, sukurtas remiantis standartinėmis WordPress talpyklos taisyklėmis: išsaugoti pagrindiniai talpyklos veikimo principai, o turinio pateikimo branduolys, WooCommerce režimas, sąsaja ir apsauga nuo konfliktų sukurti visiškai nuo nulio.

Užduotis

Standartiniai podėlio įskiepiai gerai veikia tinklaraščiuose, bet prastai – parduotuvėse. Tipinės problemos, kurias norėjau išspręsti:

  • į podėlį patenka puslapis su kito naudotojo krepšelio prekių skaičiumi;
  • prekės kortelėje lieka rodomas pasenęs likutis;
  • daugiakalbė svetainė pateikia lankytojui puslapį ne jo kalba;
  • sutrikus optimizavimui (minifikavimui, failų sujungimui), naudotojas mato tuščią ekraną;
  • administravimo skydelyje gausu reklamos ir nuorodų į išorinę svetainę.

Architektūra

Papildinį sudaro trys lygmenys, kurių kiekvienas atlieka savo užduoties dalį.

1. Įkėliklis (sdwski-cache.php). Jis sprendžia tik vieną klausimą: ar galima paleisti variklį. Jei svetainėje jau aktyvus originalus papildinys arba kita kopija, įkėliklis nieko neprijungia, neregistruoja kablių ir parodo pranešimą su mygtuku „Išjungti ir paleisti“. Visos variklio klasės, funkcijos ir konstantos turi savus prefiksus, todėl „Cannot redeclare“ tipo klaidų nekyla, nesvarbu, kokia tvarka WordPress įkėlė papildinius.

2. Variklis (sdwski-engine.php, inc/). Klasikinis sluoksnis: podėlio generavimas ir valymas, CSS/JS sumažinimas ir sujungimas, išankstinis įkėlimas, išimčių taisyklės, CDN (įskaitant Cloudflare), Varnish valymas, saugos modulis, valymo planuoklis, WP-CLI. Čia taip pat per output buffer perimama puslapio išvestis.

3. Turbo sluoksnis (inc/turbo/). Pagrindinis mano indėlis. Tai drop-in advanced-cache.php, kurį WordPress prijungia anksčiau nei temą ir papildinius, bei branduolys turbo-core.php, kuris valdo jo nuostatas, būseną ir valymą.

Kaip veikia pateikimas iš drop-in

Patikrų tvarka sistemoje advanced-cache.php sudaryta taip, kad kilus bet kokiai abejonei užklausa būtų perduota WordPress:

  1. Apdorojamos tik užklausos GET.
  2. Išankstinio įkėlimo roboto užklausos visada perduodamos WordPress, kad puslapis būtų sukurtas arba atnaujintas.
  3. Pagrindinio kompiuterio vardas ir schema (http/https) turi sutapti su svetainės adresu, įskaitant variantus su www ir be jo.
  4. Jei slapukuose yra prisijungusio naudotojo, komentatoriaus, slaptažodžiu apsaugoto įrašo arba parduotuvės seanso požymių, lankytojui pateikiamas dinaminis puslapis. Sąrašą galima papildyti savo slapukų pavadinimais.
  5. Tik po to podėlyje ieškoma paruošto failo.

Jei failas rastas, atsakymas suformuojamas nepaleidžiant WordPress. Antraštėse pateikiama Vary: Accept-Encoding, ETag ir X-ruzi-Turbo: HIT, kurią patogu patikrinti naršyklėje arba per curl -I.

Iš anksto suglaudintos kopijos ir sąlyginės užklausos

Glaudinimas atliekamas vieną kartą kuriant puslapį, o ne per kiekvieną užklausą. Šalia index.html saugomi index.html.gz ir, jei serveryje yra brotli plėtinys, index.html.br. Drop-in tikrina antraštę Accept-Encoding ir pateikia tinkamą variantą. Į sąlyginę užklausą su sutapusiu ETag atsako 304 neskaitydamas failo.

Išvalius podėlį pašalinami visi puslapio variantai: įprastas, gzip ir brotli, taip pat puslapių navigacijos ir kalbų kopijos. Tai apsaugo nuo „našlaičiais“ tapusių suglaudintų failų, kurie kitu atveju išliktų ilgiau nei pašalintas puslapis.

Internetinės parduotuvės režimas (WooCommerce)

Didžiausia darbo dalis. Taisyklės dubliuojamos trimis lygmenimis: .htaccess, drop-in lygmenyje ir variklyje, todėl apsauga nepriklauso nuo vieno jungiklio.

UžduotisSprendimas
Kito naudotojo krepšelis podėlyjeLankytojas, kurio krepšelyje yra prekių arba kuris turi parduotuvės sesiją, visada gauna tiesiogiai sugeneruotą puslapį, o jo užklausa neįrašoma į bendrąjį podėlį
Krepšelis, užsakymo pateikimas, paskyraŠie puslapiai apskritai nėra įrašomi į podėlį
Pasenęs atsargų likutis ir kainaPakeitus prekę, atsargų likutį, kainą, būseną ar užsakymą, podėlis išvalomas. Numatytasis režimas: visas podėlis. Veikia kabliukai woocommerce_update_product, woocommerce_order_status_changed ir transition_post_status
Importavimas apeinant WooCommerceIlgiausia talpyklos galiojimo trukmė, numatytoji – 3 valandos
Krepšelio skaitiklis antraštėjeTalpykloje visada rodoma nulis, o tikrasis skaičius įterpiamas nedideliu scenarijumi pagal nurodytą CSS klasę. Serveris taip pat atpažįsta tokius nulio nustatymo formatus kaip „(3)“ ir „3 vnt.“
Likutis prekės kortelėjeLikučio eilutė užklausiama iš naujo kaskart peržiūrint prekės ar katalogo puslapį
Mini krepšelisVisas blokas atnaujinamas naudojant WooCommerce fragmentus
Nuo valiutos arba grupės priklausančios kainosPasirenkamas režimas „be talpyklos“ tokiems puslapiams

Visi parduotuvės nustatymai perkelti į atskirą skirtuką „WooCommerce“. Elementų klases galima įvesti be taško, pavyzdžiui cart-count.

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

Kiekvienos kalbos podėlis tvarkomas atskirai, todėl anglišką versiją naudojantis lankytojas negaus rusiškos versijos podėlio ir atvirkščiai. Papildinys SDWSKi Cache совместим с плагинами мультиязычности. В первую очередь 100% гарантирована совместимость с плагином ИИ-перевода SDWSKi Translate.

Atsparumas gedimams

  • Optimizavimo atšaukimas įvykus trikčiai. Atgalinio iškvietimo išvesties buferis apsaugotas: jei failų sumažinimas arba sujungimas baigėsi klaida, pateikiamas pradinis puslapis.
  • Drop-in galima bet kada pašalinti. Tuomet WordPress tiesiog toliau veikia kaip įprastai – tai nurodyta pačioje failo antraštėje.
  • Turbo būsenos puslapis papunkčiui parodo, ar viskas sukonfigūruota: drop-in, leidimai, .htaccess, brotli prieinamumas.
  • Saugus pašalinimas. Įskiepis nepašalina bendrųjų duomenų, kol svetainėje lieka kita variklio kopija.

Kas dar yra viduje

Talpyklos išankstinis įkėlimas pagal tvarkaraštį per WP-Cron, HTML/CSS/JS mažinimas, failų sujungimas, atidėtasis vaizdų įkėlimas, išimčių taisyklės, konkrečių puslapių talpyklos išvalymas, Nginx ir Varnish nustatymai, integracija su CDN, naršyklės podėliavimas, emoji išjungimas, WP-CLI. Sąsaja ir išsamus skirtukas „Instrukcija“ išversti į rusų kalbą.

Technologijų rinkinys

PHP, WordPress įskiepių API (kabliai, WP-Cron, išvesties buferizavimas, drop-in advanced-cache.php), „Apache“ taisyklės .htaccess, „JavaScript“ ir CSS administravimo sąsajai bei interaktyviems parduotuvės elementams, gettext (.pot, .po, .mo) lokalizavimui.

Diegimas

  1. Nukopijuokite aplanką sdwski-cache į /wp-content/plugins/ ir suaktyvinkite įskiepį.
  2. Meniu „SDWSKi Cache“ įjunkite „Cache System“ ir išsaugokite.
  3. Atidarykite „Nustatymai → SDWSKi Cache: Turbo“ ir įsitikinkite, kad visi būsenos punktai yra žali.
  4. Patikrinkite rezultatą: atidarykite puslapį privačiame lange ir raskite antraštę X-ruzi-Turbo: HIT.

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

  • 1.5.3-turbo.10 — atskiras WooCommerce skirtukas, realiuoju laiku atnaujinamas likutis, realiuoju laiku atnaujinamas mini krepšelis.
  • 1.5.3-turbo.9 — kai WooCommerce aktyvus, krepšelio ir likučių apsauga dabar visada įjungta, atlikus bet kokius prekės ar užsakymo pakeitimus išvaloma talpykla, maksimalus talpyklos galiojimo laikas – 3 valandos.
  • 1.5.3-turbo.8 — krepšelio skaitiklis įterpiamas scenarijumi, ištaisytas parduotuvės režimo nuostatų išsaugojimas.
  • 1.5.3-turbo.2 — apsauga nuo konflikto su originaliu įskiepiu, atskiras aplankas, skirtukas „Instrukcija“.
  • 1.5.3-turbo.1 — parduotuvės režimas, drop-in, iš anksto suglaudinti puslapiai, ETag ir 304, nauja sąsaja, pašalinta reklama.

Licencija ir kilmė

Projektas platinamas pagal GPLv2 arba naujesnę versiją. Jis pagrįstas atvirojo kodo GPL puslapių talpyklos papildiniu: pradinis kodas priklauso jo autoriams, o mano pakeitimai ir papildymai pateikti atskirai ir aprašyti aukščiau.