當(dāng)前位置:首頁>WordPress資訊>WordPress 6.1 改進(jìn)了 REST API 的性能

WordPress 6.1 改進(jìn)了 REST API 的性能

WordPress 6.1REST API 進(jìn)行了許多關(guān)鍵改進(jìn),以提高性能。這些改進(jìn)減少了在每個 REST API 請求上運(yùn)行的數(shù)據(jù)庫查詢的數(shù)量。?

避免不必要地準(zhǔn)備項目鏈接

WordPress 6.1 之前,prepare_links所有控制器都會調(diào)用 REST API 中的方法。如果將_fields參數(shù)傳遞給 REST API 請求,則可能意味著未請求鏈接字段并且永遠(yuǎn)不會在響應(yīng)中返回。這是一種浪費(fèi),因?yàn)?code>prepare_links它可能包含數(shù)據(jù)庫調(diào)用或其他即使從未返回響應(yīng)也會運(yùn)行的復(fù)雜邏輯。 

在 6.1中,prepare_links僅在響應(yīng)中請求時調(diào)用,當(dāng)在字段中請求鏈接或_embedded傳遞參數(shù)時。作為這項工作的一部分,分類和文章類型控制器現(xiàn)已更新,以實(shí)現(xiàn)上述prepare_links方法,使它們與其他 REST API 控制器保持一致。?

以下是在自定義 REST API 控制器中實(shí)現(xiàn)此更改的代碼示例。

更改之前

$response = rest_ensure_response( $data );
$links = $this->prepare_links( $post );
$response->add_links( $links );
 
return $response;

更改之后

$response = rest_ensure_response( $data );
 
if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) {
  $links = $this->prepare_links( $post );
  $response->add_links( $links );
}
 
return $response;

此邏輯僅_links_embedded被請求時有條件地調(diào)用 prepare_links

有關(guān)更多信息,請參閱Trac?工單:#52992#56019#56020

Posts 控制器的改進(jìn)

在針對 REST API 請求的響應(yīng)運(yùn)行分析工具時,發(fā)現(xiàn) post 控制器會向每個 post 請求大量鏈接數(shù)據(jù)。例如,在 REST API 響應(yīng)中返回文章時,所有鏈接的數(shù)據(jù),如作者(用戶)、特色圖像和父帖子都被請求。由于這些鏈接的項目沒有在緩存中準(zhǔn)備好,這可能意味著對于 REST API 響應(yīng)中的每個帖子,將有 3 個單獨(dú)的數(shù)據(jù)庫查詢:一個用于用戶,一個用于特色圖像,另一個用于父帖子。?

在 WordPress 6.1 中,所有緩存都在單個數(shù)據(jù)庫查詢中啟動,并且有新的輔助函數(shù)可以實(shí)現(xiàn)這一點(diǎn):

update_post_author_caches:在單個查詢中獲取一組帖子并準(zhǔn)備用戶緩存。?

update_post_parent_caches:在單個查詢中獲取一組帖子和父帖子。?

update_menu_item_cache:在單個查詢獲取一系列帖子并將帖子/術(shù)語鏈接到菜單項。?

現(xiàn)有的update_post_thumbnail_cache函數(shù)用于準(zhǔn)備特色圖像緩存。這些功能也正在推廣到內(nèi)核的其他部分,這些部分可以從在一個地方啟動緩存中受益。?

有關(guān)更多信息,請參閱 Trac 工單:#55592#55593#55620????

對其他控制器的改進(jìn)

評論和用戶控制器也得到了改進(jìn):用戶控制器現(xiàn)在在單個查詢中啟動用戶元,評論控制器現(xiàn)在在單個查詢中啟動鏈接的帖子緩存。對搜索后控制器進(jìn)行了改進(jìn),以提高數(shù)據(jù)庫性能以及媒體控制器。 

有關(guān)更多信息,請參閱 Trac 工單:#55674#56272#55677#55716

聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學(xué)公眾號 WPDAXUE
WordPress資訊

WordPress 6.1 將 send_headers 操作移到加載的后面

2022-10-12 20:45:22

WordPress資訊

WordPress 6.1 開發(fā)者指南

2022-10-13 21:30:30

0 條回復(fù) A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

湘乡市| 比如县| 桑植县| 龙州县| 巴林左旗| 石河子市| 大足县| 洪雅县| 西乡县| 黑河市| 江山市| 旬邑县| 长治市| 河西区| 吐鲁番市| 灵川县| 隆子县| 祁连县| 扎赉特旗| 青田县| 承德县| 股票| 房产| 延寿县| 铜鼓县| 手机| 响水县| 虞城县| 泸溪县| 阳新县| 衡东县| 乌鲁木齐县| 浮山县| 新安县| 灵丘县| 比如县| 太谷县| 镇坪县| 明光市| 息烽县| 平罗县|