A "wc-ajax=" és az xmlrpc kezelése a processzorhasználat csökkentéséért

Egy korábbi tudásbázis cikkünk már szólt az admin-ajax.php és a wp-cron processzorhasználatának csökkentését segítő beállításokról. Azonban a Wordpress rendszert használók további nehézségekkel találkozhatnak. Az xmlrpc.php meghívása minden felhasználót érinthet, míg a wc-ajax= hívások kezelése a WooCommerce bővítményt használók számára lehet hasznos és szükséges!

 

 

1. xmlrpc.php

 

Mit csinál?

 

Az xmlrpc célja röviden az, hogy távoli eléréssel is hozzá lehessen férni a Wordpress rendszeréhez. Például lehetőséget biztosít arra, hogy okos telefonunk segítségével posztoljunk a weboldalunkra.

 

Hogyan működik?

 

HTTP-rétegen keresztül küldi el a kéréseket és fogadja a válaszokat, melyekhez XML-kódolást használ. Az RCP maga a funkciót és a protokollt is jelenti: Remote Procedure Call (RPC), azaz Távoli Eljáráshívás.

 

Nem mindenkivel történik meg, de...

 

Az xmlrpc.php rendszeres áldozata a DoS típusú támadásoknak, így elérhetetlenségével redukálható az ilyen típusú támadások nagy része/mindegyike.

 

Honnan ismerhetem fel, hogy ez okozza a problémát?

  • A ProcessKiller menüpontban rengeteg hívás látszik, melyhez az xmlrpc.php tartozik.
  • A weboldal nagyon lelassul.
  • A Nyers hozzáférési naplóban (RawAccess) a jelzett fájl hívódik meg folytonosan különböző IP-címekről.

 

Az xmlrpc.php problémájának megoldása:

  1. ki kell kapcsolni a fájl elérését manuálisan,
  2. vagy bővítmény segítségével kell módosítani az elérését.

 

xmlrpc.php probléma megoldása manuálisan - 1.1 megoldás

 

Az alábbi kódot szükséges elhelyezni a weboldalunk .htaccess fájljába ahhoz, hogy az xmlrpc.php ne legyen elérhető senki számára sem:

# xmlrpc TELJES tiltás
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

 

Ezen felül az alábbi kódot lehet elhelyezni a .htaccess fájlban a fenti helyett akkor, ha egy adott IP-n található szolgáltatásnak szükséges elérnie az xmlrpc-t:

# xmlrpc tiltás KIVÉTELEKKEL
<Files xmlrpc.php>
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Files>

Az xxx.xxx.xxx.xxx azt az IP-címet jelöli, ahonnan szükséges biztosítani a fájl elérését.

 

xmlrpc.php probléma megoldása bővítménnyel - 1.2 megoldás

 

A Wordpress admin felületén a Bővítmények/Új hozzáadása menüpont alatt az alábbira kell rákeresni:

  • Disable XML-RPC

 

A bővítmény telepítése és Bekapcsolása után az xmlrpc.php fájl elérése tiltva lesz.

 

Természetesen nem csak a teljes kikapcsolásra van mód, léteznek bővítmények arra is, hogy a fájl elérését részleteiben menedzselni lehessen. Ajánlott bővítmények:

  • Control XML-RPC Publishing
  • Stop XML-RPC Attack

 

2. wc-ajax(=get_refreshed_fragments)

 

Mit csinál?

 

A Wordpress-WooCommerce-es webshop kosarának tartalmát frissíti ki.

 

Hogyan működik?

 

A weboldalhoz tartozó összes betöltődés esetén (vásárlástól a fizetésig akár 5-10-15 oldal-betöltésen át) kifrissíti a kosár tartalmához tartozó egyedi adatokat (mennyiség, termék, ár, stb). Sajnos ezt az admin-ajax hívást a script elvégzi akkor is, ha nincs is érdemleges kosáradat a weboldal adott részén (jellemzően nyitóoldalak ilyenek lehetnek). 

 

Honnan ismerhetem fel, hogy ez okozza a problémát?

 

A legegyszerűbben úgy lehet tetten érni ezt a hibaforrást, ha egy népszerű metrikai oldalon (pingdom, gtmetrix, stb) ellenőrzést indítunk saját weboldalunkra. Az ellenőrzés végén lehet látni egy úgynevezett „Waterfall” táblázatot, melynek áttekintésekor konkrétan látszódik az admin-ajax.php lekérés is. Az alábbi képeken látható, hogyan jelenik meg az admin-ajax.php a különböző oldalak táblázatában.

 

  • gtmetrix.com

 

A wc-ajax problémájának megoldása:

 

A problémás script lefutását kell letiltani, módosítani. Ezt a módosítást manuálisan ajánljuk elvégezni, a könnyebb kezelhetőség végett, minden esetben a használt sablon functions.php/function.php fájljában. Természetesen azonban bővítmény is alkalmazható a cél érdekében.

 

A wc-ajax problémájának megoldása manuálisan – 1.1 megoldás

 

A nyitó oldalon érdemes letiltani a kosár frissülését. Az alábbi kódot kell elhelyezni az aktuálisan használt sablon functions.php/function.php fájljában.

add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11);
function dequeue_woocommerce_cart_fragments() {
if (is_front_page() || is_single() ) wp_dequeue_script('wc-cart-fragments');
}

 

Természetesen több kód is létezik a letiltásra, több különböző oldalon is letiltható a kosár-funkció. A beállítás funkcióvesztéssel jár, de az oldal gyorsaságán növelhet, így mérlegelni szükséges használatát.

 

A wc-ajax problémájának megoldása bővítménnyel – 1.2 megoldás

 

A Wordpress admin felületén a Bővítmények/Új hozzáadása menüpont alatt az alábbira kell rákeresni:

  • Disable Cart Fragments by Optimocha

A bővítmény telepítése és Bekapcsolása után nem igényel további beállítást, de fontos tudnia, hogy ez csak a főoldalra érvényes és a főoldalon innentől nem tudja majd a látogató azonnal a kosárba tenni a terméket. Amennyiben van ilyen lehetőség az oldalán, érdemes mérlegelni, hogy a kezdőoldalon kikapcsolja ezt. Amennyiben a kezdőoldalon ezt az azonnali kosárba helyezés funkciót nem szeretné kivenni, mélyebb optimalizálások lehetnek szükségesek ahhoz, hogy a betöltődési idő csökkenjen.

  • ajax, wc-ajax, woocommerce, wordpress, xmlrpc, optimalizálás, gyorsítás, hiba, megoldás, get_refreshed_fragments, frissítve
  • 6 användare blev hjälpta av detta svar
Hjälpte svaret dig?

Relaterade artiklar

Divi / Elementor WordPress Weblap Szerkesztő, Szerkesztése Lassú

A megoldás csak pár kattintás! Nagyon gyakori, hogy mostanában a Divi / Elementor Szerkesztő...

WordPress sablont / témát nem tudom feltölteni

A megoldás csak pár kattintás! PHP Memory limit (memory_limi) és post_max_size érték növelése...

Magento 2.x verziók telepítése, működtetése

A Magento egy ismerten magas erőforrásokkal rendelkező Webshop-rendszer. Telepíthetősége nem csak...

Wordpress komponens telepítése - " PCLZIP_ERR_MISSING_FILE (-4) : Missing archive file " hiba

Egyes esetekben - főleg költöztetett oldalak esetén - előfordulhat az, hogy hibába ütközik egy új...

cURL 28. (REST API) WordPress hiba és megoldása

WordPress admin felületen a Webhelyegészség menüpontban láthatjuk azokat az értesítéseket és...