Artikulo Direktoryo
Ang isang server ba na nagpapatakbo ng maraming website ng WordPress na nagbabahagi ng Memcached ay nagdudulot ng mga isyu sa overwriting ng data o cross-connection?
Ang artikulong ito ay nagbibigay ng sunud-sunod na gabay kung paano perpektong ihiwalay ang transient at object cache data sa iba't ibang site sa pamamagitan ng pag-configure ng hiwalay na cache prefix (WP_CACHE_KEY_SALT) at object cache scripts.
100% inaalis ang mga conflict sa data, na nagbibigay-daan sa maraming site na tamasahin ang sukdulang karanasan sa pagpapabilis ng memory-level nang sabay-sabay, at may kasamang mga tip sa kaligtasan upang maiwasan ang mga panganib sa mga kapaligiran ng produksyon!
Ilang araw na ang nakalipas, tinanong ako ng isang kaibigan tungkol sa tatlong WordPress website niya na tumatakbo sa server niya. Gusto niyang i-configure ang Memcached para mapabilis ang mga ito, pero nag-aalala siya na baka magulo ang data.
Natawa ako nang mga sandaling iyon dahil ako mismo ay nahulog sa patibong na ito.

Sa totoo lang, napakadaling i-set up ang Memcached para sa iisang site, pero nagiging interesante ito pagdating sa maraming site na magkakasamang ginagamit. Bakit?
Bilang default, inilalagay ng Memcached ang lahat ng transient at object cache ng mga website sa iisang pool. Isipin mo na lang kung ang mga website na A at B ay gumagamit ng parehong cache key—magdudulot iyon ng kaguluhan. Direktang ipapatong ng data ni A ang data ni B, at magsisimulang "makialam" ang dalawang website sa data ng isa't isa.
Mas nakakatawa pa ang nadatnan ko: isang pahina ng mga detalye ng produkto sa isang e-commerce website ang nagpapakita ng nilalaman ng isang artikulo mula sa ibang blog website. Natigilan ako nang husto, at napaisip, "Ano ito?!"
Inabot ako ng isang buong gabi bago ko naintindihan; conflict pala ito sa cache key.
Kaya ngayon, ibabahagi ko ang aking paraan ng pag-configure sa pag-asang makakatulong ito sa mga kaibigan ko na may parehong pangangailangan. Sinusuri ko pa rin ito, at ang ilan sa aking mga ideya ay maaaring hindi pa ganap na nabubuo, ngunit ang pamamaraang ito ay gumana nang maayos para sa akin.
Paghahanda ng kapaligiran ng server
Bago mo simulan ang pag-configure ng WordPress, dapat mong tiyakin na ang server ay may serbisyong Memcached at naka-install ang extension na PHP Memcached.
Paano ko i-install ang Memcached gamit ang HestiaCP?
Kung gagamit tayo ng Ubuntu bilang halimbawa, tatlong linya lamang ng mga utos ang kasama rito.
sudo apt update
sudo apt install memcached php-memcached
sudo systemctl restart php8.x-fpm # 根据你的 PHP 版本改Pagkatapos ng pag-install, tandaan na suriin kung tumatakbo ang serbisyo ng Memcached.
sudo systemctl status memcachedKung nakikita mo ang "aktibo (tumatakbo)," ibig sabihin ay walang problema.
Tandaan na maaaring magkaiba ang mga pangalan ng pakete sa iba't ibang sistema. Para sa mga sistemang nakabatay sa Debian, ang utos na ito ay karaniwang ginagamit; gayunpaman, para sa CentOS o iba pang mga distribusyon, maaaring kailanganin mong gamitin ang yum o dnf para mai-install.
Gumagamit ako ng Ubuntu 20.04 noong panahong iyon, at naging maayos naman ang buong proseso.
Pangunahing operasyon: I-configure ang prefix ng cache
Ang hakbang na ito ang kaluluwa ng buong konpigurasyon at ang susi upang maiwasan ang kalituhan sa datos.
Kailangan mong magdagdag ng natatanging prefix ng cache sa wp-config.php file sa root directory ng bawat website ng WordPress.
Buksan ang wp-config.php file ng unang website at hanapin ang linyang ito ng mga komento.
/* That's all, stop editing! Happy blogging. */Idagdag sa itaas ng linyang ito
// 网站 A 的配置
define( 'WP_CACHE_KEY_SALT', 'site1_unique_string_' );Pagkatapos ay buksan ang wp-config.php file sa pangalawang website at magdagdag ng katulad na configuration.
// 网站 B 的配置
define( 'WP_CACHE_KEY_SALT', 'site2_unique_string_' );Sinasabi ko sa iyo, ang string na kasunod ng WP_CACHE_KEY_SALT ay dapat na ganap na natatangi . Iminumungkahi kong gamitin mo ang domain name o abbreviation ng iyong website, tulad ng site1_com_ o site2_net_.
Tinatamad ako at gumamit ng mga numero, pero pagkalipas ng tatlong buwan, tuluyan ko nang nakalimutan kung aling numero ang tumutugma sa kung anong website, at kinailangan ko silang hanapin isa-isa, na talagang nakakasakit ng ulo.
Isipin mo: Gumagana ang Memcached sa pamamagitan ng pag-iimbak at pagkuha ng data batay sa mga cache key. Kung magtatakda ka ng natatanging prefix para sa bawat website, natural na ihihiwalay ang kanilang data at hindi makakasagabal sa isa't isa.
Para itong pagbibigay sa bawat website ng sarili nitong locker. Bagama't nasa iisang kwarto lang sila, magkakaiba ang mga susi, kaya hindi magkakahalo ang data.
Paganahin ang pag-cache ng bagay
Pagkatapos i-configure ang prefix, ang susunod na hakbang ay paganahin ang WordPress na aktwal na gamitin ang Memcached.
May dalawang opsyon dito, at sinubukan ko na ang pareho. Bawat isa ay may kanya-kanyang bentaha.
Opsyon 1: Paraan ng pag-plugin (pinaka-walang problema)
Mag-log in sa WordPress admin panel at mag-install ng caching plugin na sumusuporta sa Memcached.
Inirerekomenda ko ang paggamit ng W3 Total Cache ; medyo matatag ito. Pagkatapos ng pag-install, sa mga setting ng plugin, piliin ang Memcached bilang uri ng cache, ilagay ang 127.0.0.1 para sa server, at ang default na port na 11211, pagkatapos ay i-save.
Kung gusto mo ng mas purong solusyon, maaari mong direktang i-install ang Memcached Object Cache plugin, na nakatuon sa gawaing ito at walang iba pang mga function.
Sa totoo lang, noong una ay inakala kong maganda ang paraan ng paggamit ng plugin, dahil maginhawa ito. Pero kalaunan ay natuklasan ko na ang ilang plugin ay may kasamang maraming feature na hindi ko naman kailangan, at lagi akong nag-aalala tungkol sa mga update, natatakot na bigla silang magdadagdag ng feature na makakasira sa aking configuration.
Opsyon 2: Manu-manong i-deploy ang object-cache.php (mas kontrolado)
Kung medyo perpeksyonista ka tulad ko at ayaw mong mag-install ng napakaraming plugin, maaari mong gamitin ang solusyon na ito.
I-download ang Memcached Object Cache plugin mula sa opisyal na WordPress plugin repository, o hanapin ang pinakabagong object-cache.php file sa GitHub. Pagkatapos, i-upload ang nakuha na object-cache.php file sa wp-content directory ng bawat website sa pamamagitan ng FTP o SSH.
Tandaan na ito ang root directory ng wp-content, hindi ang plugins subdirectory.
Pagkatapos mong idagdag ito, awtomatikong makikilala at ia-activate ng WordPress ang cache. Hindi mo na kailangang i-configure ang kahit ano, dahil babasahin nito ang WP_CACHE_KEY_SALT na itinakda mo kanina sa wp-config.php.
Gusto ko sanang makatipid ng oras, kaya ginamit ko ang solusyong ito dahil kontrolado ito. Kung may lumitaw na problema, alam ko kung saan hahanap ng solusyon, at hindi ako mabibigla sa mga awtomatikong pag-update ng plugin.
Tiyaking epektibo ang configuration.
Pagkatapos mong ihanda ang sample, tiyak na gugustuhin mong malaman kung ito ay matagumpay, tama ba?
Ang pinakasimpleng paraan ay ang pagsuri sa katayuan ng Memcached. Kumonekta gamit ang telnet o nc tools.
echo "stats" | nc 127.0.0.1 11211Pagkatapos ay makakakita ka ng maraming estadistika. Bigyang-pansin ang mga halaga ng `cmd_set` at `get_hits`, at i-refresh ang pahina nang ilang beses upang makita kung tumataas ang mga ito. Kung tumataas, nangangahulugan ito na gumagana nang tama ang cache.
Isa pang mas madaling gamiting paraan para mapatunayan ito ay ang sabay na buksan ang parehong website at tingnan kung nakakasagabal ang mga ito sa isa't isa. Kung ang website A ay hindi nagpapakita ng nilalaman mula sa website B, nangangahulugan ito na gumagana ang prefix.
Gumawa ako ng mas mahigpit na pagsubok noong panahong iyon. Nagtakda ako ng iba't ibang transient values sa dalawang magkaibang website at pagkatapos ay ginamit ang nc tool para direktang mag-query sa data sa Memcached. Nakakita nga ako ng dalawang key-value pairs na may magkaibang prefix, nang walang anumang kalituhan.
Sa sandaling iyon, pakiramdam ko talaga ay may nagawa akong isang bagay na dakila, at ang pag-iisip pa lamang tungkol dito ay nagpaparamdam sa akin ng kahanga-hangang pakiramdam.
Huwag balewalain ang mga isyu sa kaligtasan
Dahil lahat ng website ay gumagamit ng iisang Memcached instance, may panganib sa seguridad na dapat mong malaman.
Sa teorya, kung ang ibang mga gumagamit ay nasa server, maaari nilang basahin ang iyong naka-cache na data sa pamamagitan ng isang lokal na port. Bagama't nangangailangan ito ng isang tiyak na antas ng teknikal na kadalubhasaan, palaging mainam na maging maingat.
Samakatuwid, dapat mong tiyakin na ang iyong Memcached service ay hindi talaga nakikinig sa mga pampublikong IP address . Tiyaking ang linyang ito ay nasa configuration file na `/etc/memcached.conf`.
-l 127.0.0.1Sa ganitong paraan, pakikinggan lamang ng Memcached ang lokal na loopback address at hindi ito maa-access mula sa labas.
Kung mayroon kang napakataas na mga kinakailangan sa seguridad, o kung ang iyong server ay nagho-host ng mga website na hindi ikinababahala ng ibang mga gumagamit, iminumungkahi kong isaalang-alang mo ang paggamit ng Redis sa halip na Memcached. Sinusuportahan ng Redis ang multi-database isolation at password verification, na ginagawa itong mas ligtas.
Gayunpaman, ang Redis ay medyo mas kumplikado i-configure kaysa sa Memcached. Kung ginagamit mo lang ito para sa personal o maliit na layunin ng pangkat, ang Memcached na may 127.0.0.1 na limitasyon sa pakikinig ay sapat na.
Ilang mga patibong na naranasan
Bilang pangwakas, hayaan ninyong ibahagi ko ang ilang mga patibong na aking naranasan, sa pag-asang matulungan kayong maiwasan ang ilang mga paglihis.
Siguraduhing tugma ang bersyon ng iyong PHP extension . Nakaranas ako dati ng sitwasyon kung saan na-install ko ang php-memcached extension, ngunit hindi ito nakilala ng WordPress. Kalaunan ay natuklasan ko na ito ay dahil sa hindi pagtutugma ng bersyon ng PHP. Siguraduhing maingat mong suriin ang bersyon ng iyong PHP kapag nag-i-install ng mga extension upang maiwasan ang maling pag-install.
Siguraduhing tama ang path papunta sa object-cache.php file . Dapat itong ilagay sa root directory ng wp-content, hindi sa plugins directory. Maling lugar ang inilagay ng kaibigan ko at matagal na niya itong inayos pero hindi nagtagumpay.
Huwag gumamit ng maiikling string para sa iyong cache prefix . Noong una ay gumamit ako ng mga string tulad ng a_ at b_, ngunit natuklasan kong masyadong maikli ang mga ito at madaling magkabanggaan sa mga cache key na ginawa mismo ng WordPress. Gumamit ng kahit man lang pitong o walong karakter na random na string o isang domain abbreviation.
Kapag nililinis ang cache, tandaan na i-clear ang cache para sa parehong website . Minsan, nililinis ko lang ang cache para sa isang website, ngunit napanatili pa rin ng kabilang website ang lumang data, na nagdulot ng mga hindi pagkakapare-pareho sa pagitan ng dalawang website. Matagal bago ko nalutas ang problema.
Sa totoo lang, hindi ko alam kung magiging kapaki-pakinabang ang mga karanasang ito sa lahat, pero ibinahagi ko ang mga ito nang walang pag-aalinlangan.
Sumulat sa dulo
Ang pag-configure ng Memcached para sa maraming site ay hindi teknikal na kumplikado; ang pangunahing isyu ay ang pag-configure ng prefix ng cache. Gayunpaman, ang problema ay nasa mga detalye. Ang mga isyu sa pagtutugma ng bersyon, mga path ng file, at mga configuration ng seguridad ay maaaring magdulot sa iyo ng malaking problema.
Halos isang taon ko nang ginagamit ang paraang ito, nagpapatakbo ng tatlong WordPress site, at sa ngayon ay wala pa akong nararanasang anumang malalaking problema. Kung gumagawa ka ng katulad nito, baka gusto mong subukan ito.
Siya nga pala, kung mayroon kang mas mainam na solusyon o nakatagpo ng anumang kawili-wiling mga problema, huwag mag-atubiling mag-iwan ng komento at ibahagi ang mga ito. Gusto kong matuto mula sa iyo.
Tutal, habang dumarami ang nakakaalam nito, mas kakaunti ang mahuhulog sa patibong, di ba?
Dahil nabasa mo na ito hanggang dito, kung nakatulong ito sa iyo, paki-like at share naman. Kung gusto mo munang makatanggap ng mga update, puwede mo rin akong sundan!
Salamat sa pagbabasa ng aking artikulo. Sa susunod na lang ulit.
Sana ay makatulong sa iyo ang artikulong "Paano Ibahagi ang Memcached sa Maramihang WordPress Websites sa Iisang Server? Ang Pinakamahusay na Gabay sa Pag-configure upang Maiwasan ang 100% na mga Error" na ibinahagi sa blog ni Chen Weiliang ( https://www.chenweiliang.com/ ).
Huwag mag-atubiling ibahagi ang link ng artikulong ito: https://www.chenweiliang.com/cwl-34368.html
