Artikel Directory
Feroarsaket in inkele server meardere WordPress- websides dy't Memcached diele , problemen mei gegevensoerskriuwing of krúsferbining?
Dit artikel jout in stap-foar-stap hantlieding oer hoe't jo tydlike en objektcachegegevens perfekt kinne isolearje oer ferskate siden troch in aparte cache-prefiks (WP_CACHE_KEY_SALT) en objektcache-skripts te konfigurearjen.
100% elimineert gegevenskonflikten, wêrtroch meardere siden tagelyk kinne genietsje fan 'e ultime fersnellingsûnderfining op ûnthâldnivo, en omfettet feiligenstips om falstrikken yn produksjeomjouwings te foarkommen!
In pear dagen lyn frege in freon my oer syn trije WordPress-websides dy't op syn server draaiden. Hy woe Memcached ynstelle om se rapper te meitsjen, mar hy wie benaud dat de gegevens yn 'e war reitsje soene.
Ik lake op dat stuit, om't ik sels yn dizze fal fallen wie.

Earlik sein, Memcached is ongelooflijk maklik yn te stellen foar ien side, mar it wurdt nijsgjirrich as it giet om meardere siden dy't neist elkoar besteane. Wêrom?
Standert set Memcached alle tydlike en objektcaches fan websiden yn deselde pool. Stel jo foar dat websiden A en B deselde cache-kaai brûke - dat soe gaos feroarsaakje. De gegevens fan A soene dy fan B direkt oerskriuwe, en de twa websiden soene begjinne mei elkoars gegevens te "bemuoien".
Wat ik tsjinkaam wie noch bespotliker: in produktdetailside op in e-commerce- webside liet de ynhâld sjen fan in artikel fan in oare blogwebside. Ik wie folslein ferbjustere en tocht: "Wat is dit?!"
It duorre my in hiele nacht om it út te finen; it die bliken in konflikt mei de cache-kaai te wêzen.
Dat hjoed diel ik myn konfiguraasjemetoade yn 'e hope dat it freonen mei deselde behoeften helpe kin. Ik bin it sels noch oan it ferkennen, en guon fan myn ideeën binne miskien noch net folslein ûntwikkele, mar dizze metoade hat foar my prima wurke.
Tarieding fan serveromjouwing
Foardat jo begjinne mei it konfigurearjen fan WordPress, moatte jo derfoar soargje dat de server de Memcached-tsjinst en de PHP Memcached-útwreiding ynstalleare hat.
Hoe kin ik Memcached ynstallearje mei HestiaCP?
As wy Ubuntu as foarbyld nimme, giet it om mar trije rigels mei kommando's.
sudo apt update
sudo apt install memcached php-memcached
sudo systemctl restart php8.x-fpm # 根据你的 PHP 版本改Nei de ynstallaasje, tink derom om te kontrolearjen oft de Memcached-tsjinst rint.
sudo systemctl status memcachedAs jo "aktyf (rinnend)" sjogge, betsjut it dat der gjin probleem is.
Tink derom dat pakketnammen kinne ferskille tusken systemen. Foar Debian-basearre systemen wurdt dit kommando oer it algemien brûkt; foar CentOS of oare distribúsjes moatte jo lykwols miskien yum of dnf brûke om te ynstallearjen.
Ik brûkte doe Ubuntu 20.04, en it hiele proses gie frij soepel.
Kearnoperaasje: Cache-prefiks konfigurearje
Dizze stap is de siel fan 'e heule konfiguraasje en de kaai om gegevensbetizing te foarkommen.
Jo moatte in unyk cache-prefiks tafoegje oan it wp-config.php-bestân yn 'e rootdirectory fan elke WordPress-webside.
Iepenje it wp-config.php-bestân fan 'e earste webside en fyn dizze rigel mei opmerkings.
/* That's all, stop editing! Happy blogging. */Foegje boppe dizze rigel ta
// 网站 A 的配置
define( 'WP_CACHE_KEY_SALT', 'site1_unique_string_' );Iepenje dan it wp-config.php-bestân op 'e twadde webside en foegje in ferlykbere konfiguraasje ta.
// 网站 B 的配置
define( 'WP_CACHE_KEY_SALT', 'site2_unique_string_' );Ik sis dy, de tekenrige dy't folget op WP_CACHE_KEY_SALT moat absolút unyk wêze . Ik stel foar dat jo de domeinnamme of ôfkoarting fan jo webside brûke, lykas site1_com_ of site2_net_.
Ik wie lui en brûkte sifers, mar trije moannen letter wie ik hielendal fergetten hokker nûmer oerienkomt mei hokker webside, en ik moast se ien foar ien opsykje, wat in echte hoofdpijn wie.
Tink derom: Memcached wurket troch gegevens op te slaan en op te heljen op basis fan cache-sleutels. As jo in unyk foarheaksel ynstelle foar elke webside, sille har gegevens fansels isolearre wurde en sille se net mei-inoar ynterferearje.
Dit is as jo elke webside in eigen locker jouwe. Hoewol se allegear yn deselde keamer binne, binne de kaaien oars, sadat de gegevens net troch elkoar reitsje.
Objektcaching ynskeakelje
Nei it konfigurearjen fan it foarheaksel is de folgjende stap om WordPress yn steat te stellen om Memcached eins te brûken.
Der binne hjir twa opsjes, en ik haw beide besocht. Elk hat syn eigen foardielen.
Opsje 1: Plugin-metoade (meast probleemfrij)
Meld jo oan by it WordPress-behearpaniel en ynstallearje in caching-plugin dy't Memcached stipet.
Ik advisearje om W3 Total Cache te brûken ; it is frij stabyl. Nei de ynstallaasje, selektearje yn 'e plugin-ynstellingen Memcached as it cachetype, fier 127.0.0.1 yn foar de server, en de standertpoarte 11211, en bewarje dan.
As jo in suverdere oplossing wolle, kinne jo de Memcached Object Cache- plugin direkt ynstallearje, dy't wijd is oan dizze taak en gjin oare ferskate funksjes hat.
Om earlik te wêzen, tocht ik earst dat de plugin-oanpak frij goed wie, om't it handich is. Mar letter ûntduts ik dat guon plugins in boskje funksjes hawwe dy't ik net nedich haw, en ik bin altyd soargen oer updates, bang dat se ynienen in funksje tafoegje dy't myn konfiguraasje yn 'e war bringt.
Opsje 2: Manuele ynsette fan object-cache.php (mear kontrolearber)
As jo in bytsje in perfeksjonist binne lykas ik en net tefolle plugins ynstallearje wolle, kinne jo dizze oplossing brûke.
Download de Memcached Object Cache- plugin fan 'e offisjele WordPress-plugin-repository, of fyn it lêste object-cache.php-bestân op GitHub. Upload dan it útpakte object-cache.php-bestân nei de wp-content-map fan elke webside fia FTP of SSH.
Tink derom dat it de root-map fan wp-content is, net de submap fan plugins.
Nei't jo it tafoege hawwe, sil WordPress de cache automatysk werkenne en aktivearje. Jo hoege neat te konfigurearjen, om't it de WP_CACHE_KEY_SALT sil lêze dy't jo earder ynsteld hawwe yn wp-config.php.
Ik woe wol tiid besparje, dus ik haw dizze oplossing benammen brûkt om't it kontrolearber is. As der in probleem ûntstiet, wit ik wêr't ik nei oplossingen sykje moat, en ik sil net ferrast wurde troch automatyske plugin-updates.
Kontrolearje oft de konfiguraasje effektyf is.
Nei't jo klear binne mei it tarieden fan it stekproef, wolle jo grif witte oft it slagge wie, toch?
De ienfâldichste manier is om de status fan Memcached te kontrolearjen. Ferbine mei telnet- of nc-ark.
echo "stats" | nc 127.0.0.1 11211Dan sille jo in boskje statistiken sjen. Jou spesjaal omtinken oan de wearden fan `cmd_set` en `get_hits`, en ferfarskje de side in pear kear om te sjen oft se tanimme. As se dat dogge, betsjut it dat de cache goed wurket.
In oare, mear yntuïtive manier om dit te ferifiearjen is om beide websiden tagelyk te iepenjen en te sjen oft se inoar ynterferearje. As webside A gjin ynhâld fan webside B werjout, dan betsjut it yn prinsipe dat it foarheaksel wurket.
Ik haw doe in noch strangere test dien. Ik haw ferskillende tydlike wearden ynsteld op twa ferskillende websiden en doe de nc-tool brûkt om de gegevens direkt yn Memcached op te freegjen. Ik koe yndie twa kaai-wearde-pearen sjen mei ferskillende foarheaksels, sûnder betizing.
Op dat stuit fielde ik echt dat ik wat geweldichs berikt hie, en allinich al oan it tinken jout my in geweldich gefoel.
Feilichheidsproblemen net negearje
Omdat alle websiden ien Memcached-eksimplaar diele, is d'r in feiligensrisiko wêr't jo bewust fan wêze moatte.
Yn teory, as oare brûkers op 'e server binne, koenen se jo cachegegevens lêze fia in lokale poarte. Hoewol dit in bepaald nivo fan technyske ekspertize fereasket, is it altyd ferstannich om foarsichtich te wêzen.
Dêrom moatte jo derfoar soargje dat jo Memcached-tsjinst absolút net nei iepenbiere IP-adressen harket . Soargje derfoar dat dizze rigel oanwêzich is yn it konfiguraasjebestân `/etc/memcached.conf`.
-l 127.0.0.1Op dizze manier sil Memcached allinich nei it lokale loopback-adres harkje en sil it net fan bûten tagonklik wêze.
As jo ekstreem hege feiligenseasken hawwe, of as jo server websiden host dêr't oare brûkers har net noflik oer fiele, stel ik foar dat jo Redis brûke ynstee fan Memcached. Redis stipet isolaasje fan meardere databases en wachtwurdferifikaasje, wêrtroch it folle feiliger is.
Redis is lykwols wat yngewikkelder om te konfigurearjen as Memcached. As jo it allinich brûke foar persoanlike doelen of foar lytse teams, is Memcached mei de harklimyt fan 127.0.0.1 yn prinsipe genôch.
Guon falstrikken dy't tsjinkamen
As lêste, lit my in pear falstrikken diele dy't ik tsjinkaam, yn 'e hope jo te helpen guon omwei's te foarkommen.
Soargje derfoar dat jo PHP-útwreidingsferzje kompatibel is . Ik bin earder yn in situaasje tsjinkommen wêr't ik de php-memcached-útwreiding ynstalleare, mar WordPress herkende it net. Letter ûntduts ik dat it te tankjen wie oan in PHP-ferzje dy't net oerienkomt. Soargje derfoar dat jo jo PHP-ferzje sekuer kontrolearje by it ynstallearjen fan útwreidings om te foarkommen dat jo de ferkearde ynstallearje.
Soargje derfoar dat jo it paad nei it object-cache.php-bestân goed hawwe . It moat yn 'e rootmap fan wp-content pleatst wurde, net yn 'e plugins-map. In freon fan my hat it op it ferkearde plak set en hat der in lange tiid oan wurke om it te reparearjen, mar sûnder súkses.
Brûk gjin koarte tekenrige foar jo cache-prefiks . Ik brûkte earst tekenrige lykas a_ en b_, mar ik fûn dat se te koart wiene en maklik botsten mei de eigen generearre cache-kaaien fan WordPress. Brûk teminsten in willekeurige tekenrige fan sân of acht tekens of in domeinôfkoarting.
Tink derom as jo de cache wiskje, de cache foar beide websiden te wiskjen . Ien kear haw ik de cache mar foar ien webside wiske, mar de oare webside bewarre noch de âlde gegevens, wêrtroch't der ynkonsistinsjes wiene tusken de twa websiden. It duorre lang foardat ik it probleem útfûn hie.
Om earlik te wêzen, wit ik net oft dizze ûnderfiningen foar elkenien nuttich wêze sille, mar ik haw se sûnder foarbehâld dield.
Skriuw oan 'e ein
It konfigurearjen fan Memcached foar meardere siden is net technysk yngewikkeld; it kearnprobleem is it konfigurearjen fan it cache-prefiks. De duvel sit lykwols yn 'e details. Problemen mei ferzje-oerienkomst, bestânspaden en feiligenskonfiguraasjes kinne jo flinke problemen feroarsaakje.
Ik brûk dizze metoade no hast in jier, haw trije WordPress-siden, en oant no ta bin ik gjin grutte problemen tsjinkommen. As jo wat ferlykbers dogge, kinne jo it miskien in kear besykje.
Trouwens, as jo bettere oplossingen hawwe of nijsgjirrige falstrikken tsjinkommen binne, lit dan gerêst in reaksje achter en diel se. Ik soe graach fan jo leare wolle.
Ommers, hoe mear minsken hjirfan witte, hoe minder minsken yn 'e fal falle sille, toch?
Om't jo oant no ta lêzen hawwe, as jo it nuttich fûnen, like en diel it dan asjebleaft. As jo earst updates ûntfange wolle, kinne jo my ek folgje!
Tankewol foar it lêzen fan myn artikel. Oant de folgjende kear.
Hopelik sil it artikel "Hoe kinne jo Memcached diele mei meardere WordPress-websides op deselde server? De ultime konfiguraasjegids om 100% flaters te foarkommen" dield op ' e blog fan Chen Weiliang ( https://www.chenweiliang.com/ ) jo nuttich wêze.
Fiel jo frij om de keppeling fan dit artikel te dielen: https://www.chenweiliang.com/cwl-34368.html
