Назад к блогу

Как я сократил счет за Cloudflare вдвое, переключившись с Durable Objects на статический кэш ассетов

2025-12-133 min read

В декабре я получил счет от Cloudflare и заметил нечто странное: $12.50 за Durable Objects.

<>

<>Durable Objects — это способ Cloudflare хранить данные, которые должны сохраняться между запросами (stateful serverless computing), например, сообщения в чате в реальном времени, состояние многопользовательской игры или совместное редактирование.

<>

У меня есть несколько сайтов, размещенных на Cloudflare, и большинство из них — по сути, статические блоги. Почему я платил за Durable Objects?

Виновник: кэширование по умолчанию в OpenNext

Если вы используете < OpenNext для развертывания Next.js на Cloudflare Workers, конфигурация по умолчанию использует Durable Objects для инвалидации кэша ISR (Incremental Static Regeneration). Это имеет смысл для динамических сайтов, которым требуется обновление по требованию, но для блога? Полный перебор.

<>

Вот как выглядит конфигурация по умолчанию:

<>
<>// open-next.config.ts (по умолчанию)<)
import { defineCloudflareConfig } from "@opennextjs/cloudflare";

export default defineCloudflareConfig();
<>

Эта невинно выглядящая конфигурация включает:

  • DOShardedTagCache: Durable Objects для инвалидации кэша на основе тегов
  • BucketCachePurge: Durable Objects для очистки кэша
  • DOQueueHandler: Durable Objects для обработки очередей
<>

Все это стоит денег при каждом вызове.

Решение: кэш статических ресурсов

Если ваш сайт в основном статический (например, блог), вы можете переключиться на кэш статических ресурсов, который хранит все в Workers Static Assets во время сборки. Никаких Durable Objects, никаких постоянных затрат.

<>
<>// open-next.config.ts (оптимизированный)<)
import { defineCloudflareConfig } from "@opennextjs/cloudflare";
import staticAssetsIncrementalCache from "@opennextjs/cloudflare/overrides/incremental-cache/static-assets-incremental-cache";

export default defineCloudflareConfig({
incrementalCache: staticAssetsIncrementalCache,<,
enableCacheInterception: true,<,
});
<>

Вот и все. Изменение двух строк конфигурации сэкономило мне $12.50 в месяц.

Компромисс

<>

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

<><>

Но если у вас есть:

  • Пользовательский контент, который часто обновляется
  • Страницы, которые должны обновляться по расписанию
  • Динамические данные, которые меняются между развертываниями
<>

Тогда вам, вероятно, нужны Durable Objects, и эти затраты оправданы.

Результаты

<>

Обновление (январь 2026 г.): Я знаю, что это не очень большие деньги, но мой январский счет за все мои сайты составил всего $6.47. Я применил это исправление ко всем из них, и плата за Durable Objects исчезла.

СервисДекабрьЯнварь
Durable Objects$12.50$0.00
Workers Paid$5.00$5.00
AI Neurons (RTN)*$8.31$0.42
Workers CPU$0.42$1.00
Vectorize$0.05$0.05
Итого$26.28$6.47
<>

*Я также отдельно оптимизировал использование AI моим чат-ботом, что и объясняет большую часть экономии на RTN.

Как проверить, нужны ли вам Durable Objects

<>

Спросите себя:

<>
  1. Меняется ли мой контент между развертываниями? Если нет, используйте кэш статических ресурсов.
  2. Использую ли я revalidate на своих страницах Next.js? Если нет, используйте кэш статических ресурсов.
  3. Мой сайт — это в основном блог или документация? Если да, используйте кэш статических ресурсов.
<>

Для большинства личных сайтов и блогов правильный выбор — кэш статических ресурсов. Сэкономьте деньги на что-то более полезное.

Ресурсы

Оставайтесь в курсе

Получайте последние статьи и идеи в свой почтовый ящик.

Unsubscribe anytime. No spam, ever.