Happ VPN

Урезанные GEO-файлы (useChunkFiles): что это

Автор
Екатерина Лебедева, редактор раздела knowledge base
Проверил:
Артём Волков
Проверено:
Опубликовано:
, обновлено
Версия гайда:
1.0

Коротко

useChunkFiles — функция Happ, которая вырезает из полных файлов geoip.dat и geosite.dat только теги, использованные в текущем профиле маршрутизации, чтобы ядро не падало при ограничениях памяти на iOS.

Полные файлы geoip.dat и geosite.dat весят несколько мегабайт и содержат сотни категорий, хотя в конкретном профиле маршрутизации обычно используется лишь несколько из них. Функция useChunkFiles вырезает из полных файлов только нужные разделы и передаёт ядру уже урезанную версию — это снижает нагрузку на память, что особенно важно на iOS с её жёстким лимитом около 50 МБ для сетевого расширения. Урезанные файлы Happ пересобирает при сохранении нового профиля со стандартными ссылками, после завершения загрузки геофайлов и после выхода из редактора правил, если списки менялись.

useChunkFiles — функция Happ, которая вырезает из полных файлов geoip.dat и geosite.dat только те теги, что используются в текущем профиле маршрутизации, и передаёт ядру уже уменьшенную версию файлов.

Суть useChunkFiles

Файлы GeoIP и GeoSite устроены как большие справочники: в них собраны категории на самые разные случаи, от отдельных стран до крупных сервисов и рекламных сетей. Но конкретный профиль маршрутизации обычно использует лишь малую часть этих категорий.

useChunkFiles решает проблему прямо: вместо того чтобы передавать ядру Xray-core весь geoip.dat и geosite.dat целиком, Happ вырезает из них только те разделы — теги, — которые упомянуты в правилах активного профиля, и отдаёт ядру уже уменьшенную версию файлов.

Причина, по которой это важно, а не просто удобно, — ограничение памяти. Документация Happ прямо связывает эту функцию с работой на iOS, где у сетевого расширения жёсткий лимит памяти около 50 МБ: если ядро попытается загрузить в память полные геофайлы, оно может не запуститься вовсе.

Как это выглядит в Happ

Урезанные файлы не создаются один раз и навсегда — Happ пересобирает их заново при выполнении одного из трёх условий:

УсловиеЧто происходит
Сохранение нового профиля со стандартными ссылками (Loyalsoldier)Скачивания не происходит — урезанные файлы собираются из уже имеющихся в приложении geoip.dat и geosite.dat
Завершение загрузки geoip.dat или geosite.datНе важно, что стало причиной загрузки — сохранение профиля, автообновление или ручной запуск
Выход из редактора правил direct, proxy или blockТолько если в списках действительно были изменения

Отдельное предупреждение касается JSON-подписок: для них нарезка идёт по тегам профиля маршрутизации, а не по самой JSON-конфигурации от провайдера. Если в JSON-конфигурации заданы свои теги outbound, а в профиле маршрутизации таких тегов нет, часть правил рискует не сработать — документация советует убедиться, что теги в обоих местах совпадают.

Пример: зачем это нужно на практике

Условное сравнение размера данных, которые получает ядро с включённой и без включённой нарезки, иллюстрирует саму идею функции:

Текст
Без useChunkFiles: geoip.dat + geosite.dat целиком → все категории на всех языках
С useChunkFiles: только теги geosite:cn, geosite:ads, geoip:amazon → то, что реально в профиле

Меньше данных в памяти ядра — меньше риск, что процесс превысит лимит памяти и будет принудительно остановлен операционной системой, как это может случиться на iOS.

Чем useChunkFiles отличается от похожих терминов

useChunkFiles легко спутать с обновлением геофайлов или самими файлами GeoIP и GeoSite, хотя роль у неё другая.

ТерминЧто делаетОтличие от useChunkFiles
GeoIP / GeoSiteПолные файлы с категориямиИсходные данные, которые useChunkFiles сокращает
Загрузка геофайловСкачивание geoip.dat и geosite.dat с сервераОтдельный процесс, который может завершиться ошибкой ещё до нарезки
Профиль маршрутизацииПравила, которые ссылаются на тегиИсточник списка тегов, по которому строится урезанный файл

Про формат самого профиля и его поля Geoipurl и Geositeurl подробно рассказано на странице профиль маршрутизации, а про порядок обновления геофайлов вручную — в инструкции обновление GEO-файлов.

Главное

  • useChunkFiles сокращает geoip.dat и geosite.dat до тегов, реально использованных в правилах активного профиля маршрутизации.
  • Причина функции — ограничение памяти на iOS: документация Happ прямо указывает лимит около 50 МБ, при котором полные геофайлы могут не дать ядру запуститься.
  • Урезанные файлы пересобираются в трёх случаях: при сохранении профиля со стандартными ссылками, после скачивания геофайлов и после выхода из редактора правил direct/proxy/block с изменениями.
  • Для JSON-подписок нарезка идёт по тегам профиля маршрутизации, а не по самой JSON-конфигурации — теги в обоих файлах должны совпадать, иначе часть правил не сработает.
  • При стандартных ссылках Loyalsoldier новый профиль не запускает скачивание заново — урезанные файлы собираются из уже имеющихся в приложении геофайлов.

Частые вопросы

Зачем Happ вообще урезает geoip.dat и geosite.dat?

Полные файлы geoip.dat и geosite.dat содержат сотни категорий на все случаи, но конкретному профилю маршрутизации обычно нужно лишь несколько из них. Загрузка всего файла целиком в память ядра Xray-core может быть избыточной, а на iOS — с жёстким лимитом памяти для сетевого расширения около 50 МБ — способна привести к тому, что ядро вообще не запустится.

В какой момент Happ создаёт урезанные файлы?

Документация описывает три условия: при сохранении нового профиля со стандартными ссылками на geoip.dat и geosite.dat от Loyalsoldier, после завершения любой загрузки геофайла — при сохранении профиля, автообновлении или ручном запуске, а также после выхода из редактора правил direct, proxy или block, если в списках были изменения.

Нужно ли специально включать useChunkFiles в настройках?

Документация Happ описывает это как встроенный механизм обработки геофайлов, а не как отдельный переключатель с понятным названием в интерфейсе. Точное расположение и название такой настройки в конкретной версии приложения документация не приводит, поэтому опираться стоит на описанное поведение — автоматическую нарезку файлов при стандартных ссылках.

Что будет, если у JSON-конфигурации и профиля маршрутизации разные теги?

Документация прямо предупреждает: для JSON-подписок нарезка урезанных файлов делается на основе тегов из профиля маршрутизации, а не из самой JSON-конфигурации. Если в JSON-конфигурации используются теги outbound, которых нет в профиле маршрутизации, стоит убедиться, что в профиле созданы такие же теги, иначе часть правил маршрутизации может не сработать как ожидается.

Почему лимит памяти именно у iOS, а не у других платформ?

Документация Happ связывает useChunkFiles именно с ограничениями памяти на iOS и называет порог около 50 МБ. У расширений сетевого типа в iOS действительно действуют строгие лимиты памяти, заданные операционной системой, и превышение может привести к принудительной остановке процесса самой системой — это общее свойство сетевых расширений iOS, а не особенность конкретно Xray-core.

Как useChunkFiles связано с ошибками загрузки геофайлов?

Это разные механизмы: ошибка загрузки геофайлов возникает, если менеджер загрузки не успевает скачать geoip.dat или geosite.dat за 3 минуты, а useChunkFiles работает уже после того, как файлы скачаны и лежат в приложении, — сокращая их для передачи ядру. Проблема с загрузкой файлов разобрана отдельно на странице [ошибки загрузки GEO-файлов](/errors/geo-files).

Упомянутые темы

Разделы по теме

Источники

  1. Документация Happ: геонастройки и маршрутизация — обращение 28 сентября 2026