Кратко

  • При включённом Workers Cache запросы к этому Worker оплачиваются по стандартному тарифу, включая обычно бесплатную статику. Попадание в кэш убирает исполнение кода и плату за его CPU, но сохраняет учёт запроса.
  • Официальный пример с большим объёмом вычислений экономит 11,20 доллара. Применение правил к другому примеру, где преобладает статика, добавляет 1,50 доллара при полностью доступных месячных пакетах.

Процессор перестал выполнять лишнюю работу. Бухгалтерия получила дополнительную.

В Workers Cache запрос сначала проверяется на наличие сохранённого ответа. Если ответ найден, Worker не запускается. Cloudflare избавляет систему от повторного исполнения кода. Но включение функции делает каждый запрос к этому Worker учитываемым по стандартному тарифу запросов — в том числе запросы статических файлов, которые обычно бесплатны.

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

Откуда берутся дополнительные полтора доллара

Workers Paid Standard предусматривает минимум 5 долларов в месяц на аккаунт. В сумму входят 10 миллионов запросов и 30 миллионов миллисекунд CPU. Сверх этого миллион запросов стоит 0,30 доллара, а миллион миллисекунд CPU — 0,02. Пакеты общие для аккаунта: новый Worker не получает ещё один комплект.

В официальном примере 2 проходит 15 миллионов запросов в месяц. Из них 12 миллионов обслуживают статические файлы, три миллиона исполняют динамический код со средним временем CPU 7 миллисекунд. Статика бесплатна. Три миллиона динамических запросов и 21 миллион миллисекунд CPU укладываются в пакет. Итог — 5 долларов.

Теперь применим к тому же потоку правило включённого Workers Cache для всего этого Worker. Условие расчёта: один платный аккаунт Standard, весь месячный пакет ещё доступен, другого использования, продуктов и налоговых или скидочных поправок нет. В тарификацию попадают все 15 миллионов запросов. Пять миллионов сверх пакета стоят 1,50 доллара.

Даже если ни один динамический ответ не найден в кэше, CPU остаётся на уровне 21 миллиона миллисекунд, ниже включённых 30 миллионов. Доплата за CPU по-прежнему нулевая. Дальнейшее сокращение вычислений не может уменьшить её ниже нуля. Общий результат — 6,50 доллара.

Это самостоятельный условный расчёт по опубликованным правилам и исходным данным примера 2. Сам Cloudflare не приводит такой итог как наблюдаемый счёт клиента. Арифметика показывает конкретный механизм: экономия уже включённого CPU не компенсирует появление платных запросов автоматически.

У хорошего кэша может быть хороший финансовый результат

Другой официальный пример начинает со 100 миллионов запросов в месяц по 7 миллисекунд CPU каждый. Базовые 5 долларов, 27 долларов за превышение запросов и 13,40 за CPU дают 45,40 доллара.

При 80% попаданий в кэш код исполняется для 20 миллионов запросов. CPU сокращается до 140 миллионов миллисекунд, доплата за него — до 2,20 доллара. Запросы всё ещё стоят 27 долларов. Итого 34,20 доллара.

Экономия составляет 11,20 доллара, примерно четверть всего счёта. Показатель 80% описывает долю ответов без запуска кода. В счёте остаётся доставка запросов, а включённый пакет меняет соотношение между процентом сэкономленного CPU и процентом сэкономленных денег.

Для динамической нагрузки с заметной платой за CPU кэш может быстро окупиться. Для преимущественно статической нагрузки, у которой вычисления и так помещались в пакет, первым финансовым эффектом может стать новый учёт запросов. Один переключатель обслуживает разные экономики.

Название функции ещё не задаёт её границы

Workers Cache работает до исполнения кода. Это отдельный механизм по отношению к прежнему Cache API внутри Worker и обычному зональному CDN-кэшированию. Согласно документации, зональные Cache Rules и Page Rules им не управляют.

В платный круг включены и обращения между Workers, обычно не создающие дополнительной платы за запрос в Standard. Поэтому при разделении приложения на компоненты имеет значение, какой именно Worker получил функцию. Точный счёт цепочки зависит от маршрута и настроек; одного количества компонентов недостаточно.

Многоуровневый кэш и объединение одновременных запросов могут ещё сильнее сократить повторные исполнения. Доставленные ответы сохраняют свой счётчик. Платформа продаёт и саму доставку, даже когда вычислительная часть стала легче.

Для настоящего счёта нужны состав трафика, расход CPU, потребление пакетов другими нагрузками и условия договора. Эти данные определят, какой эффект перевесит.

Обсуждение закупки должно доходить до простого вопроса: какие запросы раньше проходили бесплатно, а теперь попадут в оплату? Процессор заслужил передышку. Счётчик получил новую смену.

Источники