이것에 답하기 위해 나는 이것에 대한 몇 가지 테스트를했고 결과는 실제로 마음이 불었습니다.
여기 내 시험이있다
이를 위해 테스트 페이지를 설정하십시오. 단순히 page.php를 복사하고 이름을 바꾸고 루프를 삭제하십시오. 이제 백엔드에 새 페이지를 작성하십시오. 시작하기 전에 먼저 빈 정보로 타이머를 테스트하여 데이터없이 쿼리 양을 얻으십시오.
테스트 게시물을 위해 5 개의 메타 필드를 만들었습니다.
enclosure
,
First name
,
Last name
,
packages
과
post_views_count
내 테스트 게시물의 ID는 530
입니다. 게시물 내에서 간단히 게시물 ID를 사용 $post->ID
하거나 get_the_ID()
설정할 수 있습니다.
그래서 첫 테스트는 다음과 같습니다.
<?php
timer_start();
$a = get_post_meta(530, 'enclosure', true);
$b = get_post_meta(530, 'First name', true);
$c = get_post_meta(530, 'Last name', true);
$d = get_post_meta(530, 'packages', true);
$e = get_post_meta(530, 'post_views_count', true);
?>
<p><?php echo get_num_queries(); ?> queries in <?php timer_stop(1, 5); ?> seconds. </p>
그 결과는 다음과 같습니다.
0.00195 초에 1 개의 쿼리
두 번째 테스트는 다음과 같습니다.
<?php
timer_start();
$a = get_post_meta(530);
?>
<p><?php echo get_num_queries(); ?> queries in <?php timer_stop(1, 5); ?> seconds. </p>
놀랍게도 같은 결과를 냈습니다
0.00195 초에 1 개의 쿼리
당신이 보면 소스 코드 에 대한 get_post_meta()
, 당신은 그 볼 get_post_meta()
에 대한 단순히 래퍼입니다 get_metadata()
. 그래서 이것은 당신이 볼 필요가있었습니다. 소스 코드 에 대한이 get_metadata()
, 당신은 메타 데이터 캐싱되는 것을 볼 수 있습니다.
따라서 어떤 것을 사용해야하고 성능에 관한 질문에 대한 답은 귀하에게 달려 있습니다. 결과에서 증거를 보았습니다
내 개인적인 견해로는 10 개의 메타 데이터 필드 (또는 내 경우 5)를 검색 해야하는 경우 내 대답에 두 번째 접근법을 사용하십시오.
$a = get_post_meta(530);
작성하는 것이 더 빠를뿐만 아니라 코드를 반복해서는 안됩니다. 여기서 주목해야 할 또 다른 요점은 두 번째 접근 방식은 모든 메타 필드를 배열에 저장하여 매우 쉽게 액세스하고 검색 할 수 있다는 것입니다.
예를 들어, 다음은 내가하는 $a
경우의 결과입니다 .var_dump( $a );
array(9) {
["_edit_lock"]=>
array(1) {
[0]=>
string(12) "1414838328:1"
}
["_edit_last"]=>
array(1) {
[0]=>
string(1) "1"
}
["_custom_sidebar_per_page"]=>
array(1) {
[0]=>
string(7) "default"
}
["post_views_count"]=>
array(1) {
[0]=>
string(1) "0"
}
["packages"]=>
array(1) {
[0]=>
string(1) "0"
}
["repeatable_names"]=>
array(1) {
[0]=>
string(79) "a:1:{i:0;a:3:{s:4:"role";s:4:"fool";s:4:"name";s:6:"Pieter";s:3:"url";s:0:"";}}"
}
["enclosure"]=>
array(1) {
[0]=>
string(105) "http://localhost/wordpress/wp-content/uploads/2014/09/Nissan-Navara-Tough-City.avi
13218974
video/avi
"
}
["First name"]=>
array(1) {
[0]=>
string(3) "Tom"
}
["Last name"]=>
array(1) {
[0]=>
string(5) "Storm"
}
}
다음과 같이 게시물에서 반환 된 메타 데이터에 액세스 할 수 있습니다.
echo $a['First name'][0] . " " . $a['Last name'][0] . "<br>";
어느 것이 표시 될 것인가
톰 스톰