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

Mért látom a "WordPress Account Compromise Alert" hibaüzenet a WP admin oldalamra belépve?

Mért látom a "WordPress Account Compromise Alert" hibaüzenet a WP admin oldalamra belépve? Mert...

Hogyan tehetjük biztonságosabbá honlapunkat, Wordpress és Joomla rendszerünket?

Egy 2016-ban készült statisztika szerint a világon körülbelül 37 ezer weboldalt fertőznek meg...

Wordpress áthelyezése másik domainra vagy mappába

Ha már van egy felépített Wordpress weboldala aktív domain vagy mappa alatt, és át szeretné ezt...

Wordpress admin jelszó módosítása

Ha nem tud bejelentkezni a WordPress admin felületére (a http://azondomainneve.hu/wp-admin...

Hogyan tudom költöztetni WordPress oldalam?

WordPress oldalát két módon tudja költöztetni, választhatja a manuális illetve a bővítmény általi...