gpt4 book ai didi

php - Json API响应时间慢

转载 作者:行者123 更新时间:2023-11-29 19:03:38 26 4
gpt4 key购买 nike

我们正在使用 JSON API 插件,在该插件中我们面临应用程序的性能问题。应用程序的启动需要 10-20 秒的加载时间。

我们测试了 Api 请求,并得到了结果,因为调用了一些缓慢的 SQL 查询,如下所述。此查询源自 JSON API 请求。

我们无法确定此 sql 查询从哪里触发,因为查询中提到的路径我们在 post_type 中进行了一些更改,例如我们从 query.php 中排除了 post1 和 post2,但我们仍然没有得到相同的变化导致数据库中的sql查询速度慢。

SELECT  iqoyau1_posts.ID
FROM iqoyau1_posts
INNER JOIN iqoyau1_postmeta ON ( iqoyau1_posts.ID = iqoyau1_postmeta.post_id )
WHERE 1=1
AND (
( iqoyau1_postmeta.meta_key = '_hide-in-ipad'
AND CAST(iqoyau1_postmeta.meta_value AS CHAR) = '1'
)
)
AND iqoyau1_posts.post_type IN ('post1', 'post2', 'post3', 'post4',
'post5)
AND ((iqoyau1_posts.post_status = 'publish'))
GROUP BY iqoyau1_posts.ID
ORDER BY iqoyau1_posts.post_date DESC /* in [/plugins/ipad-app/query.php:38]

这是我们的query.php代码:

    <?php

function pre_get_posts( $wp_query ){

$json = $wp_query->get( 'json' );
if( !$json )
return $wp_query;
$api_version = $wp_query->get( 'api_ver' );
if( version_compare($api_version, '2.0', '<') ){
$wp_query->query_vars['post_type'] =array( 'ipad-post' );
$wp_query->query_vars['posts_per_page'] = 36;
}
elseif( version_compare($api_version, '2.0', '>=') ){
$url = $_SERVER['REQUEST_URI'];
if ($_GET["post_type"]== "XXX" && strpos($url,'api_v2') ){
$wp_query->query_vars['post_type'] = 'XXX';
$wp_query->query_vars['posts_per_page'] = $_GET["count"];
}else{
$wp_query->query_vars['post_type'] = array( 'post3', 'post4','post5);
$wp_query->query_vars['posts_per_page'] = $_GET["count"];
}

// exclude posts set to not show in ipad app
$not_in = new \WP_Query( array(
'fields' => 'ids',
'meta_key' => '_hide-in-ipad',
'meta_value' => 1,
'posts_per_page' => -1
) );

$wp_query->query_vars['post__not_in'] =
array_merge( $not_in->posts, $wp_query->get('post__not_in') );
}

$wp_query->query_vars['ignore_sticky_posts'] = TRUE;
return $wp_query;
}
add_filter( 'pre_get_posts', __NAMESPACE__.'\pre_get_posts' );

/*
* allow post__not_in in query string with normal or json syntax
* @param array
* @return array
*/
function request( $qv ){
if( !empty($qv['api_ver'])
&& version_compare($qv['api_ver'], '2.0', '>=')
&& !empty($_GET['post__not_in']) ){
if( is_string($_GET['post__not_in']) )
$qv['post__not_in'] = (array) json_decode( $_GET['post__not_in'] );
elseif( is_array($_GET['post__not_in']) )
$qv['post__not_in'] = $_GET['post__not_in'];

$qv['post__not_in'] = array_map( 'intval', $qv['post__not_in'] );
}

return $qv;
}
add_filter( 'request', __NAMESPACE__.'\request' );

我们还优化了 json 响应中的附件和标签,性能比以前有所提高,但我们仍然面临数据库查询缓慢的性能问题。我们如何优化查询任何帮助。

最佳答案

去掉postmeta中的id并将PK更改为PRIMARY KEY(post_id, meta_key)

可以在不更改输出的情况下删除GROUP BY的 View 。

JSON 与它有什么关系?

关于php - Json API响应时间慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43681224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com