Field Forge разработан с учетом производительности с самого начала. Его архитектура пользовательских таблиц и пакетная загрузка обеспечивают значительные преимущества по сравнению с решениями на основе wp_postmeta.
Пользовательская таблица против PostMeta
| Особенность | wp_postmeta (ACF) | wp_fieldforge_values (Field Forge) |
|---|---|---|
| Структура запроса | Пары ключ-значение, одна строка на поле | Типизированные строки с выделенными индексами |
| Комплексные поля | Упрощенные: repeater_0_title, … | Иерархические: parent_id / row_index |
| Строки на повторителе (10×5) | 50+ строк в postmeta | 11 строк в таблице значений |
| Пакетная загрузка | N запросов для N полей | 1 запрос для всех полей на запись |
| Интеграция кеша | Зависит от кэша метаданных WordPress | Встроенный объектный кэш с группой fieldforge |
fieldforge_preload() для пользовательских запросов
php
$query = new WP_Query( [
'post_type' => 'product',
'posts_per_page' => 20,
] );
// Preload all field values in ONE query
$post_ids = wp_list_pluck( $query->posts, 'ID' );
fieldforge_preload( $post_ids );
// Now get_field() calls use cached data -- zero additional queries
while ( $query->have_posts() ) : $query->the_post();
$price = get_field( 'price' ); // From cache
$image = get_field( 'thumbnail' ); // From cache
endwhile;
wp_reset_postdata();Авто-предзагрузка через the_posts
Field Forge автоматически предзагружает значения для записей в основном запросе. Не требуется дополнительный код для стандартных архивных страниц, индекса блога или результатов поиска.
Интеграция объектного кэша
php
$stats = FIELDFORGE_Performance::instance()->get_stats();
/*
Returns:
[
'total_values' => 1523,
'total_posts' => 87,
'total_groups' => 5,
'preloaded_posts' => 10,
'object_cache' => 'active',
'cache_group' => 'fieldforge',
]
*/
// Manual cache flush
FIELDFORGE_Performance::instance()->flush_all();—