新聞中心

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)絡(luò)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、樂(lè)業(yè)網(wǎng)站維護(hù)、網(wǎng)站推廣。
我們一起看看wordpress數(shù)據(jù)庫(kù)中的wp_options表。當(dāng)涉及到整體WordPress和數(shù)據(jù)庫(kù)性能時(shí),這是一個(gè)經(jīng)常被忽視的領(lǐng)域。尤其是在較舊的大型網(wǎng)站上,由于第三方插件和主題留下的自動(dòng)加載數(shù)據(jù),這可能是導(dǎo)致網(wǎng)站查詢時(shí)間變慢的罪魁禍?zhǔn)?。查看以下有關(guān)如何檢查、排除故障和清理wp_options表的提示。
wp_options表是什么?
wp_options表中包含的各種資料為你的WordPress網(wǎng)站,如:
- 站點(diǎn)URL、主頁(yè)URL、管理員電子郵件、默認(rèn)類別、每頁(yè)文章、時(shí)間格式等
- 插件、主題、小部件的設(shè)置
- 臨時(shí)緩存的數(shù)據(jù)
wp_options表
該表包含以下字段,我們?cè)谛阅芊矫娓P(guān)心其中一個(gè)字段:
- option_id
- option_name
- option_value
- autoload
wp_options表自動(dòng)加載
了解wp_options表的重要事項(xiàng)之一是autoload字段。這包含是或否值(標(biāo)志)。這基本上控制它是否由wp_load_alloptions() 函數(shù)加載。自動(dòng)加載的數(shù)據(jù)是在WordPress網(wǎng)站的每個(gè)頁(yè)面上加載的數(shù)據(jù)。就像我們向您展示了如何禁止某些腳本在站點(diǎn)范圍內(nèi)加載一樣,同樣的想法在這里也適用。默認(rèn)情況下,開(kāi)發(fā)人員的自動(dòng)加載屬性設(shè)置為“yes”,但并非每個(gè)插件理論上都應(yīng)該在每個(gè)頁(yè)面上加載他們的數(shù)據(jù)。
WordPress網(wǎng)站可能遇到的問(wèn)題是wp_options表中有大量自動(dòng)加載的數(shù)據(jù)。這通常是以下原因造成的:
- 數(shù)據(jù)由插件自動(dòng)加載,而實(shí)際上它應(yīng)該設(shè)置為“no”。一個(gè)很好的例子就是聯(lián)系表單插件。它需要在每個(gè)頁(yè)面上加載數(shù)據(jù)還是只在聯(lián)系頁(yè)面上加載數(shù)據(jù)?
- 插件或主題已從WordPress站點(diǎn)中刪除,但它們的選項(xiàng)仍留在wp_options表中。這可能意味著每次請(qǐng)求都會(huì)查詢不必要的自動(dòng)加載數(shù)據(jù)。
- 插件和主題開(kāi)發(fā)人員正在將數(shù)據(jù)加載到wp_options表中,而不是使用他們自己的表。這方面存在爭(zhēng)議,因?yàn)橐恍╅_(kāi)發(fā)人員更喜歡不創(chuàng)建額外表的插件。但是, wp_options表也不是為保存數(shù)千行而設(shè)計(jì)的。
太多自動(dòng)加載的數(shù)據(jù)是多少?這當(dāng)然可以變化,但理想情況下,您希望它在300KB 到1MB之間。一旦開(kāi)始接近3-5MB 范圍或更多,很可能可以優(yōu)化或刪除自動(dòng)加載的內(nèi)容。任何超過(guò)10MB 的內(nèi)容都應(yīng)該立即解決。這并不總是意味著它會(huì)導(dǎo)致問(wèn)題,但這是一個(gè)很好的起點(diǎn)。
對(duì)wp_options表中的自動(dòng)加載數(shù)據(jù)進(jìn)行故障排除
如果您的WordPress網(wǎng)站運(yùn)行緩慢,可能是由于舊WordPress插件遺留的查詢或自動(dòng)加載數(shù)據(jù)。下面我們將向您展示如何檢查數(shù)據(jù)庫(kù)中自動(dòng)加載的大小,以及深入了解實(shí)時(shí)站點(diǎn)的數(shù)據(jù)并分享我們?yōu)榍謇硭龅墓ぷ鳌?/p>
檢查自動(dòng)加載的數(shù)據(jù)大小
首先要做的是檢查WordPress網(wǎng)站上當(dāng)前自動(dòng)加載的大小。為此,請(qǐng)登錄到phpMyAdmin。單擊左側(cè)的數(shù)據(jù)庫(kù),然后單擊SQL選項(xiàng)卡。然后輸入以下命令并點(diǎn)擊“Go”。
SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options WHERE autoload='yes';
如果您的WordPress站點(diǎn)使用wp_ 以外的其他前綴,您可能需要調(diào)整上面的查詢。
phpMyAdmin中的自動(dòng)加載大小查詢
autoload_size將以字節(jié)為單位返回。KB中有1024字節(jié),MB中有1024KB。所以在我們的例子中,249,025字節(jié)等于0.25MB。所以對(duì)于這個(gè)網(wǎng)站,這是一個(gè)很好的尺寸!如果您返回低于1MB的任何內(nèi)容,您不必?fù)?dān)心。但是,如果結(jié)果要大得多,請(qǐng)繼續(xù)本教程。
自動(dòng)加載大小
下面是我們正在測(cè)試的站點(diǎn),其中返回了137,724,715個(gè)字節(jié),或者更確切地說(shuō)是137MB。這是一個(gè)網(wǎng)站肯定有問(wèn)題的一個(gè)很好的例子,或者說(shuō)有一些事情需要優(yōu)化。
wp_options表中的大型自動(dòng)加載數(shù)據(jù)
您還可以使用更長(zhǎng)的查詢,如下所示。這將顯示自動(dòng)加載的數(shù)據(jù)大小、表中有多少條目以及按大小排列的前10個(gè)條目。
SELECT 'autoloaded data in KiB' as name, ROUND(SUM(LENGTH(option_value))/ 1024) as value FROM wp_options WHERE autoload='yes' UNION SELECT 'autoloaded data count', count(*) FROM wp_options WHERE autoload='yes' UNION (SELECT option_name, length(option_value) FROM wp_options WHERE autoload='yes' ORDER BY length(option_value) DESC LIMIT 10)
高級(jí)自動(dòng)加載數(shù)據(jù)MySQL查詢
如果您有權(quán)訪問(wèn)New Relic,您還可以使用它來(lái)幫助解決連接到wp_options表的查詢。數(shù)據(jù)庫(kù)選項(xiàng)卡將指出消耗最多時(shí)間的表和查詢類型。如果您選擇列表中的條目之一,您可以看到更多詳細(xì)信息,包括一些示例查詢。在下面的這個(gè)示例中,您可以看到數(shù)據(jù)指向wp_options表中自動(dòng)加載的數(shù)據(jù)。果然,對(duì)該站點(diǎn)的快速分析證實(shí)了近250MB的自動(dòng)加載數(shù)據(jù)。
New Relic慢查詢 – wp_options表
排序頂部自動(dòng)加載的數(shù)據(jù)
下一步是使用自動(dòng)加載的數(shù)據(jù)快速排序頂部項(xiàng)目。這是一個(gè)可以用來(lái)列出前10名的快速SQL命令:
SELECT option_name, length(option_value) AS option_value_length FROM wp_options WHERE autoload='yes' ORDER BY option_value_length DESC LIMIT 10;
同樣,如果您的WordPress站點(diǎn)使用wp_ 以外的其他前綴,您可能需要調(diào)整上面的查詢。
wp_options表中自動(dòng)加載的頂部數(shù)據(jù)
在wp_options中挖掘單個(gè)自動(dòng)加載的數(shù)據(jù)
下一步是挖掘一些最重要的自動(dòng)加載數(shù)據(jù)。
301重定向
正如我們?cè)谏厦婵吹降?,頂部的自?dòng)加載選項(xiàng)是301_redirects。這可能與站點(diǎn)上的重定向插件或WordPress SEO插件直接相關(guān),該插件也具有重定向功能。在這種情況下,最好的建議是在服務(wù)器級(jí)別實(shí)際實(shí)施重定向。
為什么?因?yàn)槭褂妹赓M(fèi)的WordPress插件來(lái)實(shí)現(xiàn)重定向有時(shí)會(huì)導(dǎo)致性能問(wèn)題,因?yàn)樗鼈冎械拇蠖鄶?shù)使用wp_redirect函數(shù),這需要額外的代碼執(zhí)行和資源。當(dāng)然,它還自動(dòng)將數(shù)據(jù)加載到wp_options表中。
如果您是寶塔面板,您可以使用我們的301重定向配置在服務(wù)器級(jí)別輕松添加重定向。這不僅提高了性能,而且您可能少了一個(gè)插件需要擔(dān)心!
登入您的寶塔面板,點(diǎn)擊網(wǎng)站菜單,找到你需要配置301重定向的網(wǎng)站,點(diǎn)擊“設(shè)置”操作項(xiàng):
寶塔面板網(wǎng)站管理
然后在彈出窗口中,選擇301重定向,選擇重定向類型為路徑,然后再設(shè)置源地址及重定向URL即可。(注:不同寶塔面板,界面可能有出入)
在寶塔面板中添加重定向規(guī)則
wpurp_custom_template_
下一個(gè)自動(dòng)加載數(shù)據(jù)選項(xiàng)是wpurp_custom_template_#。我們可以看到有很多不同的行。通常,您應(yīng)該能夠通過(guò)查看您的主題或插件文件夾來(lái)找到此選項(xiàng)名稱并連接點(diǎn)。在這種情況下,我們從服務(wù)器執(zhí)行了grep命令以查看是否可以找到它。您也可以通過(guò)SFTP進(jìn)行抽查。
grep -Ri "wpurp_custom_template_"
但是,上面的命令沒(méi)有返回任何內(nèi)容,因此我們轉(zhuǎn)到 Google 并進(jìn)行了搜索。我們很快發(fā)現(xiàn)它與網(wǎng)站上不再安裝的WordPress插件有關(guān),稱為WP Ultimate Recipe。這是留下不必要的自動(dòng)加載數(shù)據(jù)的經(jīng)典示例。我們有一個(gè)關(guān)于如何卸載WordPress插件(正確方法)的冗長(zhǎng)教程。適當(dāng)?shù)?,我們的意思是?shí)際清理留下的東西。
wpurp_custom_template_
um_cache_userdata_
下一個(gè)自動(dòng)加載數(shù)據(jù)選項(xiàng)是um_cache_userdata_#。我們可以看到有很多不同的行。由于這是在底部,我們快速修改了我們的MySQL命令以顯示前40個(gè)自動(dòng)加載的數(shù)據(jù):
SELECT option_name, length(option_value) AS option_value_length FROM wp_options WHERE autoload='yes' ORDER BY option_value_length DESC LIMIT 40;
或者將所有具有該前綴的值相加:
SELECT 'sum size in KiB', ROUND(SUM(length(option_value))/1024,0) FROM wp_options WHERE autoload='yes' AND option_name like "um_cache_userdata_%"
我們可以看到 wp_options 表中有更多的um_cache_userdata_#條目。我們?cè)俅芜\(yùn)行g(shù)rep命令來(lái)檢查我們的插件和主題文件夾。
grep -Ri "um_cache_userdata_"
然后我們能夠快速確定這與Ultimate Member插件有關(guān)。另一個(gè)快速的Google搜索返回了針對(duì)此問(wèn)題的一些很好的解決方案(請(qǐng)參閱支持文章)。永遠(yuǎn)不要低估Google搜索的力量!事實(shí)證明,插件中有幾個(gè)不同的選項(xiàng)可以解決這個(gè)問(wèn)題。
- Ultimate Member > Dashboard > User Cache > Clear Cache。
- Ultimate Member -> Settings -> Advanced -> Stop caching user’s profile data(切換到ON),然后保存更改。
查看自動(dòng)加載選項(xiàng)的另一個(gè)選項(xiàng)是點(diǎn)擊編輯按鈕,這可以列出插件/主題的目錄,或列出開(kāi)發(fā)人員的網(wǎng)站。
定時(shí)任務(wù)
我們?cè)诖罅孔詣?dòng)加載數(shù)據(jù)中看到的另一個(gè)常見(jiàn)選項(xiàng)是cron。為此,它可以是任何與cron相關(guān)的東西。所以你可以做的是點(diǎn)擊“edit”按鈕,看看是什么導(dǎo)致了它。下面是一個(gè)示例,其中很明顯是“do_pings”導(dǎo)致了問(wèn)題。再次,快速的谷歌搜索揭示了清理 do_pings的快速修復(fù)。
cron – do_pings
清理wp_options表
如果您看到很多我們上面提到的內(nèi)容,那么可能是時(shí)候清理 wp_options 表中所有自動(dòng)加載的數(shù)據(jù)了。還建議您嘗試將wp_options表上的行數(shù)保持在最低限度。在刪除數(shù)據(jù)庫(kù)中的數(shù)據(jù)之前,請(qǐng)始終進(jìn)行備份。
就像我們之前所做的那樣,您需要登錄到phpMyAdmin。單擊左側(cè)的數(shù)據(jù)庫(kù),然后單擊SQL選項(xiàng)卡。然后輸入以下命令并點(diǎn)擊“Go”。
SELECT * FROM `wp_options` WHERE `autoload` = 'yes'
如果您的WordPress站點(diǎn)使用wp_ 以外的其他前綴,您可能需要調(diào)整上面的查詢。這將顯示wp_options表中設(shè)置為自動(dòng)加載的所有數(shù)據(jù)。
在wp_options中查找自動(dòng)加載的數(shù)據(jù)
向下滾動(dòng)行,我們會(huì)看到網(wǎng)站不再安裝或使用的各種插件。這只是我們將要使用的一個(gè)示例,但在這種情況下,我們注意到了一堆Jetpack行。Jetpack不再在相關(guān)網(wǎng)站上使用。
舊的自動(dòng)加載數(shù)據(jù)
檢查插件開(kāi)發(fā)人員的文檔總是好的,因?yàn)橛袝r(shí)他們可以選擇清理遺留的表格。在這種情況下,有時(shí)只需再次安裝插件,檢查其自動(dòng)清理選項(xiàng),然后正確刪除插件,會(huì)更安全、更容易。但是,我們將向您展示如何手動(dòng)清理表。
因此,在這種情況下,我們運(yùn)行以下查詢以從Jetpack插件的wp_options表中查找自動(dòng)加載的數(shù)據(jù)。要使用您自己的查詢修改查詢,只需替換 %jetpack%。
SELECT * FROM `wp_options` WHERE `autoload` = 'yes' AND `option_name` LIKE '%jetpack%'
然后,您可以選擇所有行并單擊“刪除”。
刪除自動(dòng)加載的表
或者您可以運(yùn)行以下命令:
DELETE FROM `wp_options` WHERE `autoload` = 'yes' AND `option_name` LIKE '%jetpack%'
刪除wp_options表中自動(dòng)加載的數(shù)據(jù)
然后,您可以清洗并重復(fù)wp_options表中插件和主題留下的其他自動(dòng)加載數(shù)據(jù)。
清理瞬態(tài)
除非您使用對(duì)象緩存,否則WordPress會(huì)在wp_options表中存儲(chǔ)臨時(shí)記錄。通常這些都有一個(gè)過(guò)期時(shí)間,應(yīng)該會(huì)隨著時(shí)間的推移而消失。然而,情況并非總是如此。我們已經(jīng)看到一些數(shù)據(jù)庫(kù)中有數(shù)千條舊的臨時(shí)記錄。同樣重要的是要注意瞬態(tài)默認(rèn)情況下不會(huì)自動(dòng)加載。您可以使用如下查詢來(lái)查看是否有任何自動(dòng)加載的瞬態(tài)數(shù)據(jù)。
SELECT * FROM `wp_options` WHERE `autoload` = 'yes' AND `option_name` LIKE '%transient%'
然而,更好、更安全的選擇是使用像Transient Cleaner這樣的免費(fèi)插件,它只能從wp_options表中清除過(guò)期的瞬態(tài)。
清理WordPress會(huì)話
我們看到的另一個(gè)常見(jiàn)問(wèn)題是有時(shí)cron作業(yè)不同步或不能正確觸發(fā),因此會(huì)話沒(méi)有得到清理。您可能會(huì)_wp_session_在數(shù)據(jù)庫(kù)中獲得大量行。在下面的示例中,所討論的站點(diǎn)在其 wp_options 表中有超過(guò)300萬(wàn)行。表的大小已經(jīng)超過(guò)了600MB。
具有數(shù)百萬(wàn)行的wp_options表
您可以使用如下所示的查詢來(lái)查看您是否遇到此問(wèn)題:
SELECT * FROM `wp_options` WHERE `option_name` LIKE '_wp_session_%'
_wp_session_ 行
在大多數(shù)情況下,您可以使用以下命令安全地刪除這些(作為cron作業(yè)應(yīng)該具有的):
DELETE FROM `wp_options` WHERE `option_name` LIKE '_wp_session_%'
清理完所有剩余_wp_session_ rows的表后,該表只有不到1,000行,大小減少到11MB。
WP會(huì)話已清理
它還修復(fù)了站點(diǎn)在MySQL中出現(xiàn)的峰值。
MySQL網(wǎng)絡(luò)事務(wù)
添加索引以自動(dòng)加載
如果清理wp_options表還不夠,您可以嘗試向自動(dòng)加載字段添加“index”。這基本上可以幫助它更有效地搜索。10up的出色團(tuán)隊(duì)在wp_options表上執(zhí)行了一些測(cè)試場(chǎng)景,其中包含典型的自動(dòng)加載記錄數(shù),以展示向wp_options查詢添加自動(dòng)加載索引如何提高性能。
wp_options查詢時(shí)間 (Img src: 10up )
我們還建議您從WP Bullet查看這兩個(gè)額外的資源:
- 如何將MySQL索引添加到wp_options表
- 使用WP-CLI清理wp_options表
有關(guān)更多優(yōu)化技巧,請(qǐng)確保您查看我們的深入指南: 如何加速您的WordPress網(wǎng)站(終極指南)
文章名稱:如何清理wp_options表和自動(dòng)加載的數(shù)據(jù)
鏈接分享:http://m.fisionsoft.com.cn/article/cdhipds.html


咨詢
建站咨詢
