Ограничение правил Firestore: максимальный размер файла 64KB достигнут для файла firestore.rules. Что теперь? - PullRequest
1 голос
/ 17 января 2020

Я недавно достиг этого предела. Ошибка, которую дает кли, очень неочевидна: просто указать Request contains an invalid argument, и мне потребовалось довольно много времени, чтобы понять, что я достиг максимального ограничения в 64 КБ для файла firestore.rules. Было бы замечательно, если бы эта ошибка была немного более очевидной, поскольку это сэкономило бы мне кучу времени.

Ограничения описаны здесь.

https://firebase.google.com/docs/firestore/security/rules-structure#security_rule_limits

После того, как я выполнил кучу поисков решений с ограничением в 64 КБ и не нашел ничего, я связался со службой поддержки. Их руководство было несколько полезным, но в других случаях немного шокирующим.

Я добавляю эти подробности сюда для всех, кто борется с этой проблемой, поскольку при поиске в Google больше ничего не появляется.

Вот их ответ

The given limit on the ruleset size is fixed, and it cannot be increased. However, we do offer ways to reduce the size of your ruleset, or 'lines of code' in particular. 

Here are some suggestions:
1) You can define your custom functions, which can be reusable throughout the ruleset
- This will definitely save you a lot of data space, and makes it look organized, as overused conditions can be called in one place

2) If possible, reconsider the database structure by making it efficient
- This means the less the number of collections and subcollections, the less rules are written, which makes the ruleset smaller in size
- Refactor your database structure and security rules as much as possible by removing unnecessary or redundant parts

3) Minimize the use of data validation rules, and put it on application-level instead
- Not only it can reduce lines of code, but it can reduce the number of expressions evaluated to avoid reaching the given limit of 1000 expressions per request
- As much as possible, use your app logic to ensure your data is on the right character length, correct data type, meets the patter criteria, etc. You may also use your app's advanced UI elements like a password textbox, a textbox that you can limit the character length, among others

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

  • В моем случае я уже довольно часто использовал функции в своих правилах базы данных и удалили большую часть избыточности.
  • Просьба пересмотреть структуру базы данных и необходимость пересмотра моего приложения ради уменьшения размера файла правил - огромная просьба о небольшом выигрыше.
  • Свернуть использование правил проверки данных полностью противоречит дизайну базы данных Firestore. База данных спроектирована таким образом, что вы можете напрямую подключить своего клиента к базе данных, что удаляет среднюю логику приложения c. Предложение сделать это, похоже, прямо противоречит архитектурной природе Firebase. Я предпочел бы продолжать строить свое приложение таким образом (и хочу поддерживать свою безопасность), так что это, похоже, не вариант.

Есть ли у кого-нибудь еще какие-либо предложения по решению этой проблемы?

1 Ответ

1 голос
/ 17 января 2020

Технически, эта проблема не кажется слишком отличной от попытки уменьшить размер файла javascript в сети. Многие из тех же подходов, которые использовались минификаторами javascript, могут быть использованы для уменьшения размера файла правил firebase. Было бы здорово, если бы Firebase предоставил нам такой инструмент.

В отчаянии я сделал простой минификатор, удаляющий пробелы и комментарии. На случай, если кто-то еще окажется в подобной ситуации и нуждается в быстром устранении. https://github.com/brianneisler/firemin

...