Обзор
Клиенты, редакторы и конечные пользователи ожидают, что сайты WordPress, которые вы создаёте с ACF, будут работать быстро и без лишних задержек. В этом руководстве мы рассмотрим несколько стратегий, которые помогут обеспечить оптимальную производительность ACF, включая использование JSON sync, ограничение больших групп полей и пагинацию полей Repeater.
Проверьте сторонние дополнения
Хотя это и не самая вероятная причина, стороннее дополнение вполне может быть виновником, если вы замечаете низкую производительность ACF. К тому же это довольно просто проверить.
Первый шаг — определить базовый уровень производительности. Отключите все сторонние дополнения, а затем проверьте производительность сайта WordPress без них. Если производительность улучшится, это довольно надёжный признак того, что как минимум одно дополнение замедляет ACF.
Затем включайте дополнения по одному и каждый раз проверяйте производительность. Это поможет выяснить, какие именно дополнения вызывают снижение скорости. После этого уже вам решать, стоят ли возможности дополнения той производительности, которую оно отнимает.
Кроме того, можно временно отключить все плагины сайта, кроме ACF, и проверить их тем же способом. Сайт с большим количеством работающих плагинов всегда будет медленнее, чем без них.
Даже если вы выясните, что проблему вызывает стороннее дополнение или другой плагин, мы всё равно рекомендуем изучить другие практики, перечисленные ниже. Если вы ещё не используете их, они почти наверняка повысят производительность.
Используйте функцию Local JSON в ACF
Использование функции Local JSON — один из самых эффективных способов повысить производительность плагина. Эта функция позволяет сохранять группы полей, типы записей, таксономии и страницы опций в виде JSON-файлов внутри вашей темы WordPress, а не хранить их в базе данных.
Главное преимущество в том, что она уменьшает количество обращений к базе данных, необходимых для загрузки данных. Когда ACF загружает JSON-файлы, он может быстро получить нужные настройки без множества запросов к базе данных. Это приводит к более быстрой загрузке страниц и улучшению общей производительности вашего сайта WordPress.
Функция Local JSON даёт и другие преимущества, помимо роста производительности:
- Управление версиями: храня настройки полей в JSON-файлах, вы можете управлять их версиями с помощью инструмента вроде Git. Это значительно упрощает отслеживание изменений, совместную работу с другими разработчиками и развёртывание обновлений в разных окружениях.
- Настройка: фильтры позволяют настраивать, где именно сохраняются JSON-файлы, в зависимости от имени, ключа или типа записи сохраняемого объекта.
Проще говоря, использование Local JSON улучшает производительность, рабочий процесс разработки и совместную работу.
Ленивая загрузка полей
Ленивая загрузка — это техника, при которой загрузка ресурсов откладывается до момента, когда они понадобятся. Она загружает только те ресурсы, которые сразу видны пользователю, а остальные — по мере прокрутки страницы или взаимодействия с ней.
Когда речь идёт о полях ACF, lazy loading может быть особенно полезна, если на ваших страницах много пользовательских полей.
Автозагрузка на страницах опций
Функция страницы опций в ACF PRO по умолчанию сохраняет все данные в одном месте — в таблице wp_options, а не привязывает их к странице или записи. Включение Autoload Options при создании страницы опций в интерфейсе — или использование аргумента 'autoload' => true при регистрации с помощью кода — автоматически загрузит значения полей в записи опций, когда WordPress будет загружаться.
Это действительно может улучшить производительность, если к этим значениям обращаются часто (например, если они используются в шапке или подвале), поскольку данные будут реже запрашиваться из базы. Во всех остальных случаях лучше оставить автозагрузку отключённой или установить false.
Улучшение производительности больших групп полей
Большие группы полей могут влиять на производительность в админке, в первую очередь из-за количества запросов к базе данных и/или сложности самих групп полей. Использование файлов Local JSON, как описано выше, помогает снизить нагрузку за счёт уменьшения числа обращений к базе данных.
Разбиение больших групп полей на более мелкие и удобные для управления группы также может улучшить производительность. По возможности создавайте группы полей с конкретной задачей — например, группа полей с несколькими полями для определённой страницы почти всегда работает быстрее, чем универсальная группа с большим количеством полей, которая используется в нескольких местах.
Будьте внимательны в случаях, когда ACF позволяет выбрать формат возвращаемого значения, например в полях Image и File. ACF всегда хранит ID как часть значения поля, а затем использует его для построения массивов и строк. Это означает, что возврат массива или строки всегда будет немного медленнее, чем возврат одного только ID. Ограничение использования этих форматов возврата только случаями, где они действительно нужны, может помочь повысить производительность.
Улучшение производительности Flexible Content и Repeater
Поля Flexible Content и Repeater, доступные в ACF PRO, очень полезны, но они могут влиять на производительность, когда в них хранится много данных. Чем больше данных, тем больше ресурсов требуется для их обработки.
На стороне сервера увеличение ресурсов для максимально быстрой выдачи контента может помочь справиться с большими объёмами данных. Ваш хостинг-провайдер должен помочь вам с этим. На стороне клиента, к сожалению, проблема обычно связана с тем, сколько процессорных ресурсов и памяти доступно браузеру. Единственный способ улучшить ситуацию — ограничить количество полей, которые выводятся на конкретной странице. Подумайте, сколько подполей будет у поля Flexible Content или Repeater и сколько макетов/строк Repeater обычно будет добавлено. Если подполей и макетов/строк много, могут начаться проблемы в браузере.
Пагинация поля Repeater
При загрузке страницы редактирования с полем Repeater в админке WordPress поведение по умолчанию у Repeater такое: он загружает все строки данных и каждое подполе для каждой строки. Это увеличивает общее время загрузки и блокирует пользователей от некоторых действий, например от сохранения записи.
После сохранения записи ACF отправляет на сервер каждую строку и подполе, даже если данные не изменились. Это может вызывать проблемы с памятью, некорректное сохранение данных и достижение лимита настройки PHP max_input_vars.
Настройка Pagination может повысить производительность полей Repeater за счёт отображения меньшего количества строк за один раз. Для больших Repeater это помогает избежать сбоев браузера и ошибок PHP, которые могут возникать при загрузке или сохранении.
Включение пагинации может улучшить производительность, но в некоторых случаях она не поддерживается. Эта настройка не будет отображаться для любых Repeater, вложенных в другие Repeater, поля Flexible Content или блоки ACF.
Пагинацию можно включить для полей Repeater в фронтенд-формах, но на фронтенде Repeater будет отображаться так, как будто пагинация отключена. В этом случае пагинация по-прежнему будет работать при просмотре того же поля Repeater в админке WordPress.
Поля Flexible Content на данный момент не поддерживают пагинацию, хотя мы надеемся добавить её в будущем релизе.
Заключение
Внедрение этих стратегий поможет оптимизировать работу ACF на сайтах WordPress, которые вы создаёте. В частности, использование функции Local JSON в ACF может значительно повысить скорость и эффективность ваших сайтов, а также принести дополнительные преимущества для совместной работы и рабочего процесса.
Для больших групп полей, а также Repeater и Flexible Content ключ к производительности часто заключается в ограничении количества полей, которые отображаются одновременно.
Обновлено: 01.06.2026