Урезанные 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).
Упомянутые темы
Похожие материалы
- GEO-файлы
- GeoIP в Happ: что это и как используется в маршрутизации
- GeoSite в Happ: что это и как используется в маршрутизации
- Профиль маршрутизации Happ: что это и из чего состоит
- Как обновить GEO-файлы
- JSON-конфигурации в Happ: передача 1:1 в Xray-core
- Как добавить правило маршрутизации
- Профили маршрутизации
Разделы по теме
Источники
- Документация Happ: геонастройки и маршрутизация — обращение 28 сентября 2026