Навантаження транспортних етикеток в одному абзаці
Кожне замовлення створює один PDF, кожен PDF один раз друкується на термопринтері, а режим відмови при повільній генерації — це не “сторінка повільно завантажується”, а “складський забір стоїть у черзі за вашим API рендерингу етикеток”. Доставка — це процес, де затримка p99 є головною продуктовою метрикою, де детермінований вивід важливий через регулярні передруки, і де якість штрихкоду — виміряна допусками GS1 X-dimension, а не пікселями — визначає, чи сканери прочитають етикетку з першого проходу.
PDF-стекам на основі headless-браузера важко одночасно закрити всі три вимоги: витрати холодного старту накопичуються під час піків, растрові штрихкоди деградують на малих термоетикетках, а растеризація шрифтів змінюється між версіями Chromium, тому “байтово ідентичний передрук” стає неможливим.
Чому gPdf підходить
Термоетикетка 4×6 невелика (576 × 864 пікселі при 203 dpi), має мало елементів (текстові блоки + 1-2 штрихкоди + необов’язковий логотип перевізника) і великий обсяг (середній 3PL рендерить 50 000-500 000 на день). Це саме те навантаження, для якого створено gPdf. Рендерер:
- Компілює макет один раз — координати сторінки, каскади шрифтів і геометрія штрихкодів визначаються під час запиту, а не через браузерний рушій макета.
- Векторизує кожен штрихкод — модулі малюються безпосередньо в PDF stream, тому GS1-128 шириною 30 мм читається чисто при 203 dpi або 600 dpi без растеризації з урахуванням DPI на вашому боці.
- Вбудовує NotoSans CJK + Latin — той самий payload коректно рендерить китайську назву перевізника без підготовки шрифтів у контейнері рендерингу.
p99 залишається рівним — 8 мс на нашому еталонному навантаженні (1 000 викликів прикладу вище в EU-WEST), незалежно від того, чи один isolate відрендерив одну етикетку, чи 10 000 етикеток.
Математика обсягу й вартості
Типовий середній 3PL працює приблизно з 50 000 етикеток/день, тобто близько 1,5 млн/міс. На Basic plan (5 USD/міс. за 100 000 сторінок, 0,00005 USD за сторінку перевищення) це:
1,5 млн сторінок × 0,00005 USD = 75,00 USD перевищення
+ база плану Basic = 5,00 USD
──────────────────────────────────────────
разом = 80,00 USD/міс.
Те саме навантаження на Puppeteer-on-Lambda за типових налаштувань паралельності Lambda потрапляє в діапазон 200-400 USD/міс., ще до врахування витрат холодного старту під час піку.
Black Friday: робочий приклад
Піковий сплеск — це навантаження, де рендеринг на edge найчіткіше показує свою цінність. Роздрібний клієнт, який у першу годину Black Friday виходить на 200% звичайного обсягу етикеток — наприклад, 100 000 етикеток за 60 хвилин, у середньому 1 700 етикеток/хв і пікові сплески до 5 000/хв, — завершує роботу в межах одного пулу регіону Cloudflare Workers без витрат холодного старту. Те саме навантаження на прогрітому пулі Puppeteer, розрахованому на середній трафік, дає холодні старти 1,5-2,5 с на контейнерах, які запускаються для сплеску, і складський пункт забору відчуває кожен із них.
Куди дивитися далі
- JSON Render API описує кожне поле з прикладу етикетки вище.
- Глибшу історію про геометрію штрихкодів дивіться в матеріалі про точність GS1-128.
- Замінюєте пайплайн етикеток на iText? Дивіться gPdf vs iText для логістичних етикеток або повний розбір TCO транспортних етикеток при 100K → 100M сторінок/міс..
- Для порівняння зі стеком на Chromium дивіться gPdf vs Puppeteer.