Как работает кэширование объектов в платформе 1С и как его очистить
Содержание
Клиентский кэш объектов 1С очищается запуском базы с параметром /ClearCache или удалением папок кэша в профиле пользователя. Серверный кэш сбрасывается перезапуском рабочих процессов или очисткой каталога srvinfo при остановленной службе. Оба способа безопасны, если сначала закрыть сеансы
и сделать резервную копию.
Платформа 1С:Предприятие держит в кэше конфигурацию, формы и уже прочитанные объекты, чтобы не обращаться к базе данных на каждое действие. Пока кэш совпадает с реальными данными — база работает быстро. Как только он расходится, появляются странности: старые макеты форм, ошибки после обновления, «зависшие» значения в коде.
Клиентский и серверный кэш живут в разных местах и чистятся по-разному. Ниже разберём устройство обоих, безопасную очистку и настройки, после которых чистить приходится реже.
Где платформа держит временные данные
Кэш в 1С распределён по уровням системы. В клиент-серверном варианте их два, в файловом — один.
На клиенте. Платформа выгружает с сервера метаданные конфигурации, формы и настройки и складывает их в профиль пользователя Windows. Папки лежат по путям %LOCALAPPDATA%\1C\1Cv8\ и %APPDATA%\1C\1Cv8\. Внутри — подпапки с именами-хэшами, по одной на каждую подключённую базу, плюс файл ibases.v8i со списком баз.
На сервере (кластер). Рабочий процесс rphost держит в оперативной памяти метаданные, скомпилированные модули и данные активных сеансов. На диск, в рабочий каталог кластера srvinfo, пишутся данные сеансов (папки вида snccntx…), временные хранилища и служебные файлы. Путь к srvinfo задаётся в параметрах службы агента (-d).
В файловом варианте серверной части нет — весь кэш лежит только на клиенте, в профиле пользователя.
Если база файловая и лежит в сетевой папке, «серверного» кэша у неё всё равно нет. Любое ускорение и любая очистка — только на стороне клиента, то есть на том компьютере, где запущена 1С.
Виды кэша и как они влияют на скорость
Разные виды кэша ускоряют разные операции. И мешают тоже по-разному.
| Вид кэша | Где хранится | Что ускоряет | Когда мешает |
|---|---|---|---|
| Кэш конфигурации (метаданные) | Профиль пользователя | Первый запуск, открытие форм | После динамического обновления показывает старую структуру |
| Кэш форм и модулей | Профиль + память rphost | Повторное открытие форм | Форма открывается с ошибкой после сбоя обновления |
| Кэш объектов сеанса | Память rphost | Повторное чтение одного объекта в вызове | Внутри вызова возвращает устаревшую копию объекта |
Данные сеансов (snccntx) | Каталог srvinfo | Восстановление сеанса, временные хранилища | Разрастаются и занимают место на диске |
Кэш объектов сеанса — отдельная история. Когда код в одном серверном вызове читает один и тот же объект по ссылке несколько раз, платформа отдаёт закэшированную копию, а не лезет в базу повторно. Это ускоряет работу, но если между чтениями объект изменили в другом сеансе, вы получите старое значение.
Отдельно стоит кэш конфигурации. При динамическом обновлении платформа меняет конфигурацию «на лету», но запущенные клиенты продолжают работать на её старой копии из кэша, пока не перезайдут. Поэтому после обновления часть пользователей какое-то время видит прежние формы и структуру — это не сбой, а штатная работа кэша.
Кэш — это всегда копия данных. Рабочие данные хранятся в самой базе, и очистка кэша их не трогает. Теряются только несохранённые изменения в открытых формах.
Как очистить клиентский кэш
Два рабочих способа. Первый безопаснее, второй — когда первый не помог.
Способ 1. Запуск с параметром /ClearCache
Платформа умеет сбросить кэш
конкретной базы при старте. Параметр /ClearCache чистит только её кэш и не трогает список баз и общие настройки.
Через командную строку для серверной базы:
"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" ENTERPRISE /S"сервер\имя_базы" /ClearCache
Для файловой базы вместо /S указывают путь:
"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" ENTERPRISE /F"C:\Базы\Моя_база" /ClearCache
Проще — через ярлык: в свойствах ярлыка 1С в конце поля Объект допишите пробел и /ClearCache. Один запуск очистит кэш, дальше параметр можно убрать.
Способ 2. Удаление папок кэша вручную
Если база не стартует и до параметра не добраться, папки удаляют напрямую.
- Закройте все окна 1С. Проверьте в диспетчере задач, что не осталось процессов
1cv8.exeи1cv8c.exe— иначе файлы будут заняты. - Откройте
%LOCALAPPDATA%\1C\1Cv8\(путь можно вставить прямо в адресную строку проводника). - Удалите подпапки с длинными именами-хэшами. Файл
ibases.v8iне трогайте — в нём список ваших баз. - Повторите для
%APPDATA%\1C\1Cv8\. - Запустите 1С. Первый старт будет дольше обычного — платформа заново построит кэш.
Удаление папок сбрасывает кэш сразу для всех баз этого пользователя, а не только для проблемной. Если нужно почистить одну базу — используйте /ClearCache.
Серверный кэш и рабочие процессы
Серверный кэш живёт в памяти рабочих процессов rphost и на диске в srvinfo. Сбрасывается он перезапуском процессов и очисткой каталога.
Перезапуск рабочего процесса — основной способ освободить память и сбросить кэш на сервере. Варианты, от мягкого к жёсткому:
- Плановый перезапуск. В консоли администрирования серверов, в свойствах кластера, задайте интервал перезапуска рабочих процессов (в секундах) и допустимый объём памяти, при превышении которого процесс перезапускается. Кластер будет сам поднимать новый процесс и гасить старый без обрыва сеансов — пользователи переедут на новый процесс незаметно.
- Отключение процесса. В списке
Рабочие процессыпоставьте у нужногоИспользовать=Нет. Кластер создаст новый процесс, а старый остановится, когда с него уйдут сеансы. - Принудительное завершение. Снять
rphost.exeв диспетчере задач — агентragentподнимет новый. ⚠️ Это оборвёт все сеансы, работавшие на этом процессе, с потерей несохранённых данных. Только как крайняя мера и вне рабочего времени.
Очистка каталога srvinfo нужна, когда папки snccntx… разрослись или сеансы подвисли.
- Предупредите пользователей и дождитесь, пока они выйдут.
- Остановите службу
Агент сервера 1С:Предприятия(ragent). ⚠️ Все сеансы оборвутся, базы станут недоступны. - В каталоге
srvinfo, внутри папки кластера, удалите папкиsnccntx…— это данные сеансов, они пересоздадутся. - Не удаляйте папку
reg_<порт>целиком — это реестр кластера с настройками всех баз и администраторов. - Запустите службу обратно.
Перезапуск rphost сбрасывает кэш в памяти, но не чистит snccntx на диске. Если место на диске кончается именно из-за данных сеансов — нужен шаг с остановкой службы.
Когда данные устаревают: диагностика
Чаще всего «кэш виноват» в трёх ситуациях: после обновления, при ошибке открытия формы и при повторном чтении объекта в коде. Разберём по симптомам.
/ClearCache./ClearCache, при повторе — удалите папки кэша вручную.Ссылка.ПолучитьОбъект() или сбросьте кэш повторно используемых значений вызовом ОбновитьПовторноИспользуемыеЗначения().rphost по времени и по порогу памяти.Главное правило диагностики: сначала понять, какой кэш подозреваете. Проблема у одного пользователя — почти всегда клиентский кэш. Проблема у всех сразу — смотрите в сторону сервера и рабочих процессов.
Быстрый способ изолировать клиентский кэш — зайти в ту же базу с другого компьютера или под другим пользователем Windows. Если там всё в порядке, дело в кэше на исходной машине, и лечится оно его очисткой. Если ошибка воспроизводится у всех — чистить клиентский кэш бесполезно, причина глубже.
Как настроить платформу, чтобы кэш не мешал
Очистка кэша — лечение симптома. Чтобы чистить приходилось реже, настройте систему заранее.
- 💾 Не чистите кэш «на всякий случай». После очистки первый запуск медленнее — платформа строит кэш с нуля. Чистите только когда есть конкретная проблема.
- 🧠 Дайте рабочим процессам достаточно оперативной памяти. Если кэш помещается в память
rphost, база не упирается в диск. Нехватка RAM — частая причина тормозов, которые путают с «грязным кэшем». - 💽 Положите
srvinfoи каталог временных файлов на SSD. Данные сеансов и временные хранилища активно пишутся на диск, и скорость диска напрямую влияет на отзывчивость. - 🔁 Настройте плановый перезапуск
rphost(например, раз в сутки ночью) и порог по памяти. Это сбрасывает накопленный кэш и страхует от утечек без ручного вмешательства. - 🕐 Обновляйте конфигурацию вне рабочего времени. После обновления пользователи перезаходят, и клиентский кэш обновляется у всех сразу, без ошибок открытия форм в разгар дня.
- 🧹 Следите за каталогом временных файлов. Платформа активно пишет во временную папку пользователя и в
srvinfo; если диск забит под завязку, тормоза и ошибки записи легко принять за проблему кэша.
Если тормозит конкретная база под нагрузкой, прежде чем винить кэш, проверьте блокировки и тяжёлые запросы в технологическом журнале. Очистка кэша такие проблемы не лечит.
Очистка кэша не заменяет исправление базы
Очистку кэша часто путают с лечением самой базы. Это разные инструменты, и когда база действительно повреждена, очистка кэша не поможет.
Если симптомы серьёзнее устаревших форм — ошибки при проведении документов, «падения» платформы на конкретных операциях, сообщения о нарушении целостности — работают с самой базой:
- Файловая база. Проверка физической целостности делается утилитой
chdbfl.exeиз каталогаbinустановленной платформы. База при этом должна быть закрыта для всех. - Любая база. В Конфигураторе есть режим
Администрирование → Тестирование и исправление информационной базы— он проверяет логическую целостность и пересчитывает итоги. ⚠️ Запускается в монопольном режиме, пользователи должны выйти, и обязательно с резервной копией.
Перед тестированием и исправлением обязательно сделайте резервную копию: часть режимов меняет данные необратимо.
Порядок простой: сначала очистка кэша как самое лёгкое и безопасное действие. Не помогло — переходите к тестированию и исправлению, но уже с копией и вне рабочего времени.
Частые ошибки при очистке кэша
Эти ошибки превращают простую очистку в потерю данных или настроек.
- ❌ Удаляют папки, не закрыв 1С. Файлы заняты процессом, часть не удаляется, кэш тут же строится заново — эффекта ноль.
- ❌ Сносят
ibases.v8iвместе с кэшем. Пропадает список баз в окне запуска, базы приходится подключать заново вручную. - ❌ Удаляют на сервере папку
reg_<порт>. Вместе с «мусором» уходят настройки кластера, список баз и учётки администраторов. Восстановление — только из резервной копии. - ❌ Останавливают службу
ragentв рабочее время без предупреждения. Все теряют несохранённые данные, а вы — доверие коллег. - ❌ Чистят кэш вместо решения проблемы. Если причина в незавершённом динамическом обновлении или в блокировках, очистка даст временный эффект, и ошибка вернётся.
Частые вопросы
Нужно ли чистить кэш после каждого обновления?
Потеряю ли я данные, если очищу кэш?
Где находится кэш у файловой базы?
%LOCALAPPDATA%\1C\1Cv8\ и %APPDATA%\1C\1Cv8\. Серверной части у файловой базы нет.Можно ли чистить кэш, пока в базе работают другие?
srvinfo — нет: остановка службы оборвёт все сеансы.