Артицле Дирецтори
Да ли један сервер који покреће више WordPress веб локација које деле Memcached узрокује проблеме са преписивањем података или унакрсним повезивањем?
Овај чланак пружа водич корак по корак о томе како савршено изоловати пролазне податке и податке кеша објеката на различитим сајтовима конфигурисањем посебног префикса кеша (WP_CACHE_KEY_SALT) и скрипти за кеш објеката.
100% елиминише сукобе података, омогућавајући вишеструким локацијама да истовремено уживају у врхунском искуству убрзања на нивоу меморије, и укључује безбедносне савете за спречавање грешака у производним окружењима!
Пре неколико дана, пријатељ ме је питао о своја три WordPress веб-сајта која раде на његовом серверу. Желео је да конфигурише Memcached да би их убрзао, али се бринуо да ће се подаци покварити.
Насмејао сам се у том тренутку јер сам и сам упао у ову замку.

Искрено, Memcached је невероватно лако подесити за један сајт, али постаје занимљиво када је у питању коегзистирање више сајтова. Зашто?
Подразумевано, Memcached ставља све пролазне и објектне кеш меморије веб локација у исти пул. Замислите да веб локације А и Б користе исти кључ кеша - то би изазвало хаос. Подаци веб локације А би директно преписали податке веб локације Б, и две веб локације би почеле да „мете“ међусобне податке.
Оно што сам наишао било је још смешније: страница са детаљима о производу на веб-сајту за електронску трговину приказивала је садржај чланка са другог блога. Био сам потпуно запањен, мислећи: „Шта је ово?!“
Требала ми је цела ноћ да схватим; испоставило се да је у питању сукоб кључева кеша.
Дакле, данас делим свој метод конфигурације у нади да може помоћи пријатељима са истим потребама. Још увек га истражујем и неке од мојих идеја можда нису у потпуности развијене, али овај метод је код мене добро функционисао.
Припрема серверског окружења
Пре него што почнете са конфигурацијом WordPress-а, морате се уверити да сервер има инсталирану Memcached услугу и PHP Memcached екстензију.
Како да инсталирам Memcached користећи HestiaCP?
Узимајући Убунту као пример, он укључује само три линије команди.
sudo apt update
sudo apt install memcached php-memcached
sudo systemctl restart php8.x-fpm # 根据你的 PHP 版本改Након инсталације, не заборавите да проверите да ли је Memcached сервис покренут.
sudo systemctl status memcachedАко видите „активно (покреће се)“, то значи да нема проблема.
Имајте на уму да се називи пакета могу разликовати у зависности од система. За системе засноване на Debian-у, ова команда се генерално користи; међутим, за CentOS или друге дистрибуције, можда ћете морати да користите yum или dnf за инсталацију.
У то време сам користио Ubuntu 20.04 и цео процес је прошао прилично глатко.
Основна операција: Конфигуришите префикс кеша
Овај корак је душа целе конфигурације и кључ за спречавање забуне података.
Потребно је да додате јединствени префикс кеша у датотеку wp-config.php у коренском директоријуму сваке WordPress веб странице.
Отворите датотеку wp-config.php прве веб странице и пронађите ову линију коментара.
/* That's all, stop editing! Happy blogging. */Додај изнад ове линије
// 网站 A 的配置
define( 'WP_CACHE_KEY_SALT', 'site1_unique_string_' );Затим отворите датотеку wp-config.php на другој веб страници и додајте сличну конфигурацију.
// 网站 B 的配置
define( 'WP_CACHE_KEY_SALT', 'site2_unique_string_' );Кажем вам, стринг који следи WP_CACHE_KEY_SALT мора бити апсолутно јединствен . Предлажем да користите назив домена вашег веб-сајта или скраћеницу, као што је site1_com_ или site2_net_.
Био сам лењ и користио сам бројеве, али три месеца касније сам потпуно заборавио који број одговара којој веб страници и морао сам да их тражим један по један, што је била права главобоља.
Размислите о томе: Memcached функционише тако што чува и преузима податке на основу кеш кључева. Ако поставите јединствени префикс за сваку веб страницу, њихови подаци ће природно бити изоловани и неће се међусобно ометати.
Ово је као да свакој веб страници дате свој ормарић. Иако су сви у истој просторији, кључеви су различити, тако да се подаци неће помешати.
Омогући кеширање објеката
Након конфигурисања префикса, следећи корак је омогућити WordPress-у да заправо користи Memcached.
Овде постоје две опције, и испробао сам обе. Свака има своје предности.
Опција 1: Метод са додатком (најједноставнији)
Пријавите се на администраторски панел WordPress-а и инсталирајте додатак за кеширање који подржава Memcached.
Препоручујем коришћење W3 Total Cache-а ; прилично је стабилан. Након инсталације, у подешавањима додатка, изаберите Memcached као тип кеша, унесите 127.0.0.1 за сервер и подразумевани порт 11211, а затим сачувајте.
Ако желите чистије решење, можете директно инсталирати додатак Memcached Object Cache , који је посвећен овом задатку и нема других разних функција.
Да будем искрен, у почетку сам мислио да је приступ са додацима прилично добар, јер је практичан. Али касније сам открио да неки додаци долазе са гомилом функција које ми нису потребне, и увек сам забринут због ажурирања, плашећи се да ће изненада додати неку функцију која ће ми покварити конфигурацију.
Опција 2: Ручно распоређивање object-cache.php (лакше за контролу)
Ако сте помало перфекциониста као ја и не желите да инсталирате превише додатака, можете користити ово решење.
Преузмите додатак Memcached Object Cache из званичног WordPress репозиторијума додатака или пронађите најновију датотеку object-cache.php на GitHub-у. Затим, отпремите издвојену датотеку object-cache.php у wp-content директоријум сваке веб странице путем FTP-а или SSH-а.
Имајте на уму да је то коренски директоријум wp-content-а, а не поддиректоријум plugins.
Након што га додате, WordPress ће аутоматски препознати и активирати кеш. Не морате ништа да конфигуришете, јер ће прочитати WP_CACHE_KEY_SALT који сте раније подесили у wp-config.php.
Желео сам да уштедим време, па сам користио ово решење углавном зато што се може контролисати. Ако се појави проблем, знам где да тражим решења и неће ме изненадити аутоматска ажурирања додатака.
Проверите да ли је конфигурација ефикасна.
Након што завршите са припремом узорка, сигурно ћете желети да знате да ли је био успешан, зар не?
Најједноставнији начин је да проверите статус Memcached-а. Повежите се користећи telnet или nc алате.
echo "stats" | nc 127.0.0.1 11211Затим ћете видети гомилу статистике. Обратите посебну пажњу на вредности `cmd_set` и `get_hits` и освежите страницу неколико пута да видите да ли се повећавају. Ако се повећавају, то значи да кеш исправно ради.
Још један интуитивнији начин да се ово провери јесте да се обе веб странице отворе истовремено и види да ли се међусобно ометају. Ако веб страница А не приказује садржај са веб странице Б, то у основи значи да префикс ради.
У то време сам урадио још ригорознији тест. Поставио сам различите пролазне вредности на две различите веб странице, а затим сам користио алатку nc да директно упитам податке у Memcached-у. Заиста сам могао да видим два пара кључ-вредност са различитим префиксима, без икакве забуне.
У том тренутку, заиста сам се осећао као да сам постигао нешто велико, и сама помисао на то ме чини сјајним.
Не занемарујте безбедносне проблеме
Пошто све веб странице деле једну Memcached инстанцу, постоји безбедносни ризик кога би требало да будете свесни.
Теоретски, ако су други корисници на серверу, могли би да читају ваше кеширане податке преко локалног порта. Иако ово захтева одређени ниво техничке стручности, увек је паметно бити опрезан.
Стога, морате осигурати да ваш Memcached сервис никако не слуша јавне IP адресе . Уверите се да је ова линија присутна у конфигурационом фајлу `/etc/memcached.conf`.
-l 127.0.0.1На овај начин, Memcached ће само слушати локалну адресу повратне петље и неће бити доступан споља.
Ако имате изузетно високе безбедносне захтеве или ако ваш сервер хостује веб странице због којих су други корисници забринути, предлажем да размислите о коришћењу Redis-а уместо Memcached-а. Redis подржава изолацију више база података и верификацију лозинке, што га чини много безбеднијим.
Међутим, Redis је мало сложенији за конфигурисање од Memcached-а. Ако га користите само за личне потребе или потребе малог тима, Memcached са ограничењем слушања 127.0.0.1 је у основи довољан.
Неке замке на које се наишло
На крају, дозволите ми да поделим неколико замки на које сам наишао, надајући се да ћу вам помоћи да избегнете неке заобилазне путеве.
Уверите се да је ваша PHP верзија екстензије компатибилна . Раније сам се сусрео са ситуацијом где сам инсталирао екстензију php-memcached, али је WordPress није препознао. Касније сам открио да је то било због неусклађености PHP верзија. Пажљиво проверите своју PHP верзију када инсталирате екстензије како бисте избегли инсталирање погрешне.
Уверите се да сте правилно унели путању до датотеке object-cache.php . Мора бити смештена у коренски директоријум wp-content-а, а не у директоријум додатака. Један мој пријатељ ју је ставио на погрешно место и провео много времена покушавајући да је поправи, али безуспешно.
Не користите кратке стрингове за префикс кеша . У почетку сам користио стрингове попут a_ и b_, али сам открио да су прекратки и лако се сукобљавају са WordPress-овим генерисаним кључевима кеша. Користите насумични стринг од најмање седам или осам карактера или скраћеницу домена.
Приликом брисања кеш меморије, не заборавите да обришете кеш меморију за обе веб странице . Једном сам обрисао кеш меморију само за једну веб страницу, али је друга веб страница и даље задржала старе податке, што је узроковало недоследности између две веб странице. Требало ми је дуго времена да схватим у чему је проблем.
Искрено, не знам да ли ће ова искуства бити корисна свима, али сам их поделио без резерве.
写在最后
Конфигурисање Memcached-а за више сајтова није технички компликовано; кључни проблем је конфигурисање префикса кеша. Међутим, ђаво је у детаљима. Проблеми са подударањем верзија, путањама датотека и безбедносним конфигурацијама могу вам проузроковати значајне проблеме.
Користим ову методу већ скоро годину дана, покрећем три WordPress сајта и до сада нисам наишао ни на један већи проблем. Ако радите нешто слично, можда бисте желели да је испробате.
Успут, ако имате нека боља решења или сте наишли на неке занимљиве замке, слободно оставите коментар и поделите их. Волео бих да учим од вас.
На крају крајева, што више људи зна о овоме, мање људи ће упасти у замку, зар не?
Пошто сте прочитали до сада, ако вам је било од помоћи, лајкујте и поделите. Ако желите први да примате новости, можете ме и пратити!
Хвала вам што сте прочитали мој чланак. Видимо се следећи пут.
Надам се да ће вам чланак „Како делити Memcached са више WordPress веб локација на истом серверу? Ултимативни водич за конфигурацију за спречавање 100% грешака“ објављен на блогу Чен Веилианг ( https://www.chenweiliang.com/ ) бити од помоћи.
Слободно поделите линк овог чланка: https://www.chenweiliang.com/cwl-34368.html
