Ліміти, повтори і один заголовок, що робить їх безпечними
Ліміт — це не покарання. Це причина, з якої безплатний сервіс може одночасно лишатися безплатним і відкритим для програм.
Що обмежено і чим
Ліміти — це фіксовані вікна, що рахуються або за адресою, або за акаунтом. Програма без ключа може створити десять сторінок на добу з однієї адреси; з ключем — десять сторінок за годину на тому акаунті, якому ключ належить. У валідації, завантаження картинок за URL, імпорту, claim-посилань і MCP-ендпоїнта свої вікна: щедрі для справжньої роботи і вузькі для циклу.
Адреси ніколи не зберігаються в сирому вигляді: лічильник ключується солоним хешем — так само, як статистика відвідувачів. Рядок лімітера — це запис, а сторінка про приватність обіцяє, що сира адреса не записується ніколи; ця обіцянка включає і його.
- Коли вікно вичерпано, приходить 429 з кодом rate_limited.
- У тілі лежить retryAfter у секундах, те саме значення — у заголовку Retry-After.
- Стільки й зачекайте. Не повторюйте одразу і не розмазуйте ту саму роботу по кількох адресах.
- Якщо потрібного більше, ніж дозволяє вікно, — це привід поговорити, а не шукати обхід.
Чому ключ ідемпотентності кращий за цикл повторів
- Створення, яке відвалилося за таймаутом, могло все-таки пройти. Сліпий повтор дає другий акаунт на імені, яке тепер зайняте.
- Надішліть зі створенням заголовок Idempotency-Key — і повтор поверне першу відповідь замість того, щоб щось створювати.
- Ключ прив’язаний до того, хто викликає, тож два клієнти не прочитають відповіді одне одного, і живе він добу.
- Підійде будь-який унікальний рядок: ідентифікатор задачі, хеш запиту, адреса плюс позначка часу.
Обмеження, які не про швидкість
Є ще дві стелі, і вони з іншої причини. Програма може створити десять сторінок на одному акаунті — людина, що додає сторінки руками, не обмежена взагалі, бо людина, яка натискає кнопку, не цикл. І сторінка тримає вісімдесят блоків: значно більше, ніж варто мати, і значно менше, ніж згенерує генератор, якщо його не спинити.
Сторінки, зроблені програмою і ніким не забрані, підмітаються: знімаються з публікації через тридцять днів, якщо їх ніхто жодного разу не відкривав, і видаляються через шістдесят. Один-єдиний візит звільняє сторінку від цього назавжди.