← Cloudflare Workers / workers / configuration
Příznaky kompatibility
Příznaky kompatibility zapínají konkrétní funkce. Hodí se, pokud chcete pomoci týmu Workers otestovat připravované změny, které ještě nejsou ve výchozím nastavení zapnuté, nebo pokud potřebujete odložit změnu, na které váš kód závisí, a přitom chcete použít ostatní změny kompatibility.
Příznaky kompatibility mívají často datum, od kterého jsou zapnuté ve výchozím nastavení, a proto při zadání compatibility_date pro váš Worker, můžete rychle povolit všechny tyto různé compatibility flags až do daného data včetně.
Nastavení příznaků kompatibility
Můžete zadat seznam compatibility_flags, které povolují nebo zakazují konkrétní změny.
Pomocí nástroje Wrangler
Příznaky kompatibility lze nastavit v souboru Workeru Konfigurační soubor Wrangler.
Tento příklad povoluje konkrétní příznak formdata_parser_supports_files, který je popsán níže. Od uvedeného data 2021-09-14, tento konkrétní flag ještě nebyl ve výchozím nastavení zapnutý, ale pokud ho uvedete v compatibility_flags, můžeme jej přesto povolit. compatibility_flags lze také použít k vypnutí změn, které se v minulosti staly výchozími.
{
// Opt into backwards-incompatible changes through September 14, 2021.
"compatibility_date": "2021-09-14",
// Also opt into an upcoming fix to the FormData API.
"compatibility_flags": [
"formdata_parser_supports_files"
]
}compatibility_date = "2021-09-14"
compatibility_flags = [ "formdata_parser_supports_files" ]Pomocí Cloudflare Dashboard
Příznaky kompatibility lze aktualizovat v nastavení Workers na Cloudflare dashboard ↗.
Pomocí Cloudflare API
Příznaky kompatibility lze nastavit při nahrávání Workeru pomocí Workers Script API nebo Workers Versions API v těle požadavku, v poli metadata .
Příznak kompatibility s Node.js
A rostoucí podmnožina rozhraní Node.js API jsou dostupná přímo jako Runtime API, aniž byste museli do vlastního kódu přidávat polyfilly.
Pro data kompatibility 2026-08-04 nebo novější mají projekty Workers a Pages povolené oba nodejs_compat a nodejs_compat_v2 ve výchozím nastavení. Vestavěná runtime API a polyfilly jsou dostupné bez dalšího nastavení. Tyto příznaky se pro tato data kompatibility nepoužívají. Stávající projekty je při aktualizaci data kompatibility nemusí odebírat.
Pokud je vaše datum kompatibility starší než 2026-08-04, přidejte nodejs_compat příznak kompatibility do vašeho Konfigurační soubor Wrangler abyste se přihlásili:
{
"compatibility_flags": [
"nodejs_compat"
]
}compatibility_flags = [ "nodejs_compat" ]Chcete-li vypnout Kompatibilita s Node.js zcela pro datum kompatibility 2026-08-04 nebo novější odeberte pozitivní příznaky, pokud jsou přítomné. Poté přidejte oba no_nodejs_compat a no_nodejs_compat_v2. Příklady konfigurace najdete v Příznak kompatibility s Node.js.
Pro data kompatibility 2026-08-04 nebo novější Workers povolí oba nodejs_compat a nodejs_compat_v2 ve výchozím nastavení. Tyto příznaky se pro tato data kompatibility nepoužívají, protože stejné chování zajišťuje samotné datum kompatibility. Wrangler, Miniflare, plugin Cloudflare pro Vite a plugin Workers Vitest tyto nadbytečné příznaky při spouštění runtime prostředí ignorují. Stávající projekty je při aktualizaci data kompatibility nemusí odebírat. V nových konfiguracích je vynechte.
Chcete-li úplně vypnout kompatibilitu s Node.js pro datum kompatibility 2026-08-04 nebo novější odeberte nodejs_compat a nodejs_compat_v2 pokud existuje. Poté přidejte oba následující příznaky:
{
"compatibility_flags": [
"no_nodejs_compat",
"no_nodejs_compat_v2"
]
}compatibility_flags = [ "no_nodejs_compat", "no_nodejs_compat_v2" ]Node.js AsyncLocalStorage API je pro Workers obzvláště užitečná funkce. Chcete-li povolit pouze AsyncLocalStorage API použijte nodejs_als příznak kompatibility.
{
"compatibility_flags": [
"nodejs_als"
]
}compatibility_flags = [ "nodejs_als" ]Historie příznaků
Nejnovější příznaky jsou uvedeny jako první.
Odebrat API Node.js 24.x s ukončenou podporou
| Výchozí od | 2028-04-30 |
| Příznak pro zapnutí | remove_nodejs_compat_eol_v24 |
| Příznak pro vypnutí | add_nodejs_compat_eol_v24 |
Když remove_nodejs_compat_eol_v24 je povoleno, rozhraní API, jejichž podpora v Node.js 24.x skončila, jsou odstraněna.
Tento příznak se automaticky povolí, když remove_nodejs_compat_eol příznak je povolen po 2028-04-30.
Odebrat API Node.js 22.x s ukončenou podporou
| Výchozí od | 2027-04-30 |
| Příznak pro zapnutí | remove_nodejs_compat_eol_v22 |
| Příznak pro vypnutí | add_nodejs_compat_eol_v22 |
Když remove_nodejs_compat_eol_v22 je povoleno, rozhraní API, jejichž podpora v Node.js 22.x skončila, jsou odstraněna.
Tento příznak se automaticky povolí, když remove_nodejs_compat_eol příznak je povolen po 2027-04-30.
Vyvolání chyby u nepodporovaných možností TLS
| Výchozí od | 2026-06-16 |
| Příznak pro zapnutí | throw_on_not_implemented_tls_options |
| Příznak pro vypnutí | no_throw_on_not_implemented_tls_options |
Je-li povoleno, předání nepodporovaných možností TLS (např. checkServerIdentity) na tls.connect() nebo new TLSSocket() vyvolá ERR_OPTION_NOT_IMPLEMENTED místo jejich tichého ignorování
Zpracování souborů .pth pro Python Workers
| Výchozí od | 2026-05-26 |
| Příznak pro zapnutí | python_process_pth_files |
| Příznak pro vypnutí | disable_python_process_pth_files |
Když python_process_pth_files příznak nastaven, Python Workers zpracují .pth
soubory ve python_modules/ adresář při spuštění voláním
site.addsitedir() ↗
na něm. To umožňuje balíčkům rozšiřovat sys.path deklarativně, například pro přidání
podadresářů nebo registraci háčků pro import (import hooks). Bez tohoto příznaku .pth soubory v
python_modules/ se ignorují.
Tento příznak zároveň přesouvá kontextové správce entropie nejvyšší úrovně, které vyžadují některé balíčky, mimo runtime a do workers-py ↗.
Musíte použít workers-py verze 1.1.3 nebo novější, když je tento příznak nastaven.
Getter hasSubscribers v Node.js diagnostics_channel
| Výchozí od | 2026-05-19 |
| Příznak pro zapnutí | diagnostics_channel_has_subscribers_getter |
| Příznak pro vypnutí | no_diagnostics_channel_has_subscribers_getter |
Když diagnostics_channel_has_subscribers_getter je povoleno, Channel.hasSubscribers a TracingChannel.hasSubscribers z node:diagnostics_channel se stávají getter vlastnostmi pouze pro čtení, které se vyhodnocují přímo na boolean, což odpovídá chování Node.js.
Dříve, hasSubscribers byla zaregistrována jako metoda, což vyžadovalo, aby uživatelé volali ch.hasSubscribers() se závorkami. Když je tento příznak zapnutý, ch.hasSubscribers vrací booleovskou hodnotu bez volání funkce, v souladu s Dokumentace Node.js ↗.
Tento příznak vyžaduje nodejs_compat aby bylo povoleno.
Workflows zachovávají NonRetryableError zpráva
| Výchozí od | 2026-05-14 |
| Příznak pro zapnutí | workflows_preserve_non_retryable_error_message |
| Příznak pro vypnutí | workflows_replace_non_retryable_error_message |
Je-li povoleno a pokud Workflow krok vyvolá NonRetryableError, chyba message a name vlastnosti jsou u vyvolané výjimky zachovány, místo aby byly nahrazeny obecným řetězcem ukončení.
Dříve vyhození NonRetryableError s vlastní zprávou by způsobilo, že se původní chybová zpráva ztratí a nahradí se "The execution of the Workflow instance was terminated, as a step threw an NonRetryableError and it was not handled":
import { WorkflowEntrypoint, NonRetryableError } from "cloudflare:workers";
export class MyWorkflow extends WorkflowEntrypoint {
async run(event, step) {
await step.do("my-step", async () => {
throw new NonRetryableError("custom error message");
// Without this flag: error.message === "The execution of the Workflow instance was terminated, as a step threw an NonRetryableError and it was not handled"
// With this flag: error.message === "custom error message"
});
}
}S workflows_preserve_non_retryable_error_message příznak povolen, zachová se původní zpráva a název chyby, což usnadňuje ladění a zpracování konkrétních chybových případů v kódu vašeho Workflow.
Vylepšená serializace chyb
| Výchozí od | 2026-04-21 |
| Příznak pro zapnutí | enhanced_error_serialization |
| Příznak pro vypnutí | legacy_error_serialization |
Když enhanced_error_serialization je povoleno, chyby serializované pomocí structuredClone() nebo V8 serializace podporují více typů chyb a zahrnují vlastní vlastnosti chybového objektu.
Mějte na paměti, že po povolení deserializace chyb ve výchozím nastavení nezachová původní stack trace.
Dříve pouze základní Error typy byly serializovány a vlastní vlastnosti přidané do objektů chyb se během serializace ztratily.
Použijte izolovaný jmenný prostor PID pro kontejnery
| Výchozí od | 2026-04-01 |
| Příznak pro zapnutí | containers_pid_namespace |
| Příznak pro vypnutí | no_containers_pid_namespace |
Když containers_pid_namespace je nastaveno, kontejnery použijí izolovaný PID namespace. ENTRYPOINT vašeho kontejneru bude mít PID 1.
Pokud není nastaveno, kontejner sdílí PID namespace s virtuálním strojem (VM), který jej obsahuje. Parametr ENTRYPOINT vašeho kontejneru bude ne mají PID 1 a další procesy běžící na VM (které nejsou součástí vašeho kontejneru) budou viditelné.
Backpressure TextEncoderStream/TextDecoderStream odpovídající specifikaci
| Výchozí od | 2026-03-24 |
| Příznak pro zapnutí | encoder_stream_spec_compliant_backpressure |
| Příznak pro vypnutí | no_encoder_stream_spec_compliant_backpressure |
Když encoder_stream_spec_compliant_backpressure je povoleno, TextEncoderStream a TextDecoderStream použijte high water mark strany pro čtení nastavený na 0, jak je uvedeno v WHATWG Encoding Standard ↗.
Při high water mark 0 začíná čtecí strana rovnou s uplatněným backpressure, takže zápisy se správně blokují, dokud čtenář data nevyzvedne. Dříve byl high water mark ve výchozím stavu 1, což způsobovalo pull() aby se spustil při startu a vyčistil zpětný tlak (backpressure) ještě před jakýmkoli zápisem.
Chování writeru WritableStream odpovídající specifikaci
| Výchozí od | 2026-03-24 |
| Příznak pro zapnutí | writable_stream_spec_compliant_writer |
| Příznak pro vypnutí | no_writable_stream_spec_compliant_writer |
Když writable_stream_spec_compliant_writer je povoleno, několik WritableStream byly opraveny problémy se souladem se specifikací týkající se zámku zapisovače a chování při jeho uvolňování, aby odpovídaly WHATWG Streams Standard ↗.
Povolit globální třídy Performance
| Výchozí od | 2026-03-17 |
| Příznak pro zapnutí | enable_global_performance_classes |
| Příznak pro vypnutí | disable_global_performance_classes |
Když enable_global_performance_classes je povoleno, v globálním rozsahu jsou k dispozici následující třídy: PerformanceEntry, PerformanceMark, PerformanceMeasure, PerformanceResourceTiming, PerformanceObserver, a PerformanceObserverEntryList.
Tyto třídy jsou také implicitně povoleny enable_nodejs_perf_hooks_module příznak.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2026-03-17 nebo novější, když nodejs_compat je zapnuté.
Povolit node:child_process modul
| Výchozí od | 2026-03-17 |
| Příznak pro zapnutí | enable_nodejs_child_process_module |
| Příznak pro vypnutí | disable_nodejs_child_process_module |
enable_nodejs_child_process_module příznak zapíná node:child_process stub modulu ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2026-03-17 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:child_process API.
Povolit node:perf_hooks modul
| Výchozí od | 2026-03-17 |
| Příznak pro zapnutí | enable_nodejs_perf_hooks_module |
| Příznak pro vypnutí | disable_nodejs_perf_hooks_module |
enable_nodejs_perf_hooks_module příznak zapíná node:perf_hooks modul ve Workers. Tento příznak zároveň implicitně zapíná globální třídy Performance (PerformanceEntry, PerformanceMark, PerformanceMeasure, PerformanceResourceTiming, PerformanceObserver, a PerformanceObserverEntryList).
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2026-03-17 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:perf_hooks API.
Povolit node:readline modul
| Výchozí od | 2026-03-17 |
| Příznak pro zapnutí | enable_nodejs_readline_module |
| Příznak pro vypnutí | disable_nodejs_readline_module |
enable_nodejs_readline_module příznak zapíná node:readline stub modulu ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2026-03-17 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:readline API.
Povolit node:repl modul
| Výchozí od | 2026-03-17 |
| Příznak pro zapnutí | enable_nodejs_repl_module |
| Příznak pro vypnutí | disable_nodejs_repl_module |
enable_nodejs_repl_module příznak zapíná node:repl stub modulu ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2026-03-17 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:repl API.
Povolit node:tty modul
| Výchozí od | 2026-03-17 |
| Příznak pro zapnutí | enable_nodejs_tty_module |
| Příznak pro vypnutí | disable_nodejs_tty_module |
enable_nodejs_tty_module příznak zapíná node:tty stub modulu ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2026-03-17 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:tty API.
Povolit node:v8 modul
| Výchozí od | 2026-03-17 |
| Příznak pro zapnutí | enable_nodejs_v8_module |
| Příznak pro vypnutí | disable_nodejs_v8_module |
enable_nodejs_v8_module příznak zapíná node:v8 stub modulu ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2026-03-17 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:v8 API.
Povolit node:worker_threads modul
| Výchozí od | 2026-03-17 |
| Příznak pro zapnutí | enable_nodejs_worker_threads_module |
| Příznak pro vypnutí | disable_nodejs_worker_threads_module |
enable_nodejs_worker_threads_module příznak zapíná node:worker_threads stub modulu ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2026-03-17 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:worker_threads API.
Standardní binární typ WebSocket
| Výchozí od | 2026-03-17 |
| Příznak pro zapnutí | websocket_standard_binary_type |
| Příznak pro vypnutí | no_websocket_standard_binary_type |
Tento příznak řídí výchozí hodnotu binaryType vlastnost na WebSocket, což zase určuje, jak jsou binární rámce doručovány do message událost. Když je příznak aktivní, binaryType má výchozí hodnotu "blob" a binární rámce přicházejí jako Blob ↗ objekty odpovídající Specifikace WebSocket ↗ a standardní chování prohlížeče. Bez tohoto příznaku binaryType má výchozí hodnotu "arraybuffer" a binární rámce přicházejí jako ArrayBuffer ↗, což odpovídá dosavadnímu chování runtime.
binaryType vlastnost samotná je dostupná na každém WebSocket bez ohledu na příznak. Přiřazení hodnoty přepíše výchozí nastavení pro daný WebSocket:
const resp = await fetch("https://example.com", {
headers: { Upgrade: "websocket" },
});
const ws = resp.webSocket;
// Opt back into ArrayBuffer delivery before calling accept().
ws.binaryType = "arraybuffer";
ws.accept();
ws.addEventListener("message", (event) => {
// event.data is an ArrayBuffer for binary frames.
});Pokud ještě nejste připraveni k migraci a chcete ponechat ArrayBuffer jako výchozí hodnotu pro každý WebSocket ve vašem Workeru přidejte no_websocket_standard_binary_type příznak do svého Konfigurační soubor Wrangler.
Tento příznak nemá žádný vliv na hibernovatelný WebSocket Durable Object webSocketMessage handler, který vždy přijímá binární data jako ArrayBuffer.
Zpřístupněte chybové kódy v operacích Queue
| Výchozí od | 2026-03-12 |
| Příznak pro zapnutí | queue_expose_error_codes |
| Příznak pro vypnutí | no_queue_expose_error_codes |
Když queue_expose_error_codes je povoleno, Queue operace budou obsahovat podrobné informace o chybách, včetně kódů chyb a jejich příčin, což usnadní programové zpracování a diagnostiku chyb souvisejících s frontou.
Automatická odpověď WebSocket na close
| Výchozí od | 2026-04-07 |
| Příznak pro zapnutí | web_socket_auto_reply_to_close |
| Příznak pro vypnutí | web_socket_manual_reply_to_close |
Když server odešle rámec WebSocket Close, runtime prostředí Workers nyní automaticky odešle reciproční rámec Close a přejde readyState na CLOSED před vyvoláním close událost. Ta odpovídá Specifikace WebSocket ↗ a chování prohlížeče.
Dříve přijetí serverem iniciovaného rámce Close ponechalo WebSocket ve stavu CLOSING a vyžadovalo, aby aplikace volala close() samo o sobě. Když je tento flag aktivní, už nemusíte volat close() ve vašem close obslužná rutina události. Runtime řeší ukončovací handshake automaticky.
const [client, server] = Object.values(new WebSocketPair());
server.accept();
server.addEventListener("close", (event) => {
// readyState is already CLOSED — no need to call server.close().
console.log(server.readyState); // WebSocket.CLOSED
console.log(event.code); // 1000
console.log(event.wasClean); // true
}, { once: true });Pokud přesto voláte close() uvnitř handleru, volání se tiše ignoruje. Stávající kód, který ručně odpovídá na rámce Close, se tak po aktualizaci data kompatibility nerozbije.
Automatické chování při uzavírání může narušit proxování WebSocket. Když Worker funguje jako proxy mezi klientem a backendem, dřívější chování mu umožňovalo zaznamenat rámec Close z backendu, aniž by runtime spojení ukončil, čímž Worker získal čas na koordinaci čistého uzavření na straně klienta. Aby tento model fungoval, accept() metoda nyní přijímá možnost allowHalfOpen. Zavolejte ws.accept({ allowHalfOpen: true }) pro obnovení starého chování half-open bez ohledu na příznak kompatibility.
const [client, server] = Object.values(new WebSocketPair());
// Opt into half-open mode for proxying
server.accept({ allowHalfOpen: true });
server.addEventListener("close", (event) => {
// With allowHalfOpen true, readyState is still CLOSING here,
// giving you time to coordinate the close on the other side.
console.log(server.readyState); // WebSocket.CLOSING
// Manually close when ready.
server.close(1000, "done");
}, { once: true });Mějte na paměti, že neexistuje odpovídající možnost k WebSocket konstruktor. WebSockety vytvořené pomocí new WebSocket bude vždy automaticky odpovídat na closes poté, co tato flag nabude účinnosti. WebSockets vytvořené tímto způsobem jsou automaticky "accepted", takže není možnost předat tuto možnost accept(). Pokud vytváříte WebSocket pomocí new WebSocket, ale potřebujete poloviční uzavírání (half-open), budete muset přejít na fetch() místo toho.
// This does not allow half-open:
let ws = new WebSocket("wss://example.com");
// But you can do this instead:
let resp = await fetch("https://example.com", {
headers: { "Upgrade": "websocket" }
});
if (!resp.webSocket) {
throw new Error("WebSocket handshake not accepted");
}
let ws = resp.webSocket;
ws.accept({ allowHalfOpen: true });Další informace naleznete v Dokumentace WebSocket API.
Vyhrazená implementace TextDecoder pro CJK
| Výchozí od | 2026-03-03 |
| Příznak pro zapnutí | text_decoder_cjk_decoder |
| Příznak pro vypnutí | disable_text_decoder_cjk_decoder |
Když text_decoder_cjk_decoder je povoleno, vyhrazený CJK TextDecoder implementace se používá pro přepisy kódování CJK a zpracování úvodních bajtů Big5 namísto starší cesty kódu založené výhradně na ICU. Tím se zlepšuje shoda se specifikací při dekódování textu CJK.
Odloží zpracování neošetřených odmítnutí promise až za kontrolní bod microtasku
| Výchozí od | 2026-03-03 |
| Příznak pro zapnutí | unhandled_rejection_after_microtask_checkpoint |
| Příznak pro vypnutí | no_unhandled_rejection_after_microtask_checkpoint |
Když unhandled_rejection_after_microtask_checkpoint je povoleno, unhandledrejection zpracování události se odloží, dokud se nedokončí kontrolní bod mikroúlohy. Tím se zabrání chybným vyvoláním u vícetaktových řetězců příslibů, kde je obslužná rutina zamítnutí přidána až v pozdější mikroúloze.
Dříve mohlo zpracování unhandled rejection proběhnout předčasně, ještě před zpracováním všech microtasks v aktuálním checkpointu, což vedlo k falešným unhandledrejection události pro přísliby, které byly skutečně obslouženy.
Vynutit limit počtu bajtů pro důvod uzavření WebSocket
| Výchozí od | 2026-03-03 |
| Příznak pro zapnutí | websocket_close_reason_byte_limit |
| Příznak pro vypnutí | no_websocket_close_reason_byte_limit |
Když websocket_close_reason_byte_limit je povoleno, WebSocket.close() vyvolá SyntaxError DOMException pokud reason string překročí 123 bajtů při kódování UTF-8, jak vyžaduje specifikace WHATWG WebSocket ↗ a RFC 6455, oddíl 5.5 ↗.
Workers dříve umožňoval libovolně dlouhé důvody uzavření spojení bez validace.
Durable Object deleteAll() odstraňuje alarmy
| Výchozí od | 2026-02-24 |
| Příznak pro zapnutí | delete_all_deletes_alarm |
| Příznak pro vypnutí | delete_all_preserves_alarm |
S delete_all_deletes_alarm příznak nastaven, volání deleteAll() nad úložištěm Durable Object smaže veškerý aktivní alarm i všechna uložená data. Dříve deleteAll() mazalo pouze data uložená uživatelem a pro alarmy byl potřeba samostatný deleteAlarm() volání k odebrání. Tato změna platí jak pro Durable Objects s úložištěm KV, tak pro Durable Objects s úložištěm SQLite.
TextDecoder nahrazuje osamocené náhradní znaky
| Výchozí od | 2026-02-24 |
| Příznak pro zapnutí | text_decoder_replace_surrogates |
| Příznak pro vypnutí | disable_text_decoder_replace_surrogates |
Když text_decoder_replace_surrogates je povoleno, UTF-16le TextDecoder nahradí osamocené náhradní znaky (lone surrogates) znakem U+FFFD (náhradní znak Unicode) podle požadavků Standard Encoding ↗. Dříve byly osamocené náhradní znaky (surrogates) předávány beze změny, což vytvářelo nesprávně formované řetězce.
Podpora iterovatelných objektů jako těla fetch Request/Response
| Výchozí od | 2026-02-19 |
| Příznak pro zapnutí | fetch_iterable_type_support |
| Příznak pro vypnutí | no_fetch_iterable_type_support |
Když fetch_iterable_type_support je povoleno, synchronní i asynchronní iterovatelné objekty lze předat jako tělo fetch() Request nebo Response a bude se přes ni správně iterovat.
Dříve byly synchronní iterovatelné objekty jako Arrays přijímány, ale byly převedeny na řetězec (např. [1, 2, 3] by se stalo "1,2,3"), a asynchronní iterovatelné objekty by byly považovány za běžné objekty a vůbec by se neiterovaly. Když je tento příznak povolený, iterovatelné objekty se správně zpracují jako streamovaný obsah těla.
Všimněte si, že Arrays se nyní budou zpracovávat jako iterovatelné objekty místo převodu na řetězec, což je změna narušující zpětnou kompatibilitu u kódu, který se spoléhal na původní chování.
Povolení globálních časovačů kompatibilních s Node.js
| Výchozí od | 2026-02-10 |
| Příznak pro zapnutí | enable_nodejs_global_timers |
| Příznak pro vypnutí | no_nodejs_global_timers |
Když enable_nodejs_global_timers je povoleno, setTimeout, setInterval, clearTimeout, a clearInterval vracejí kompatibilní s Node.js Timeout objekty s metodami jako refresh(), ref(), unref(), a hasRef(), což odpovídá chování node:timers.
Tento příznak vyžaduje nodejs_compat aby bylo povoleno, a je automaticky povoleno pro Workery používající datum kompatibility 2026-02-10 nebo novější, pokud nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o timer API.
Povolit node:dgram modul
| Výchozí od | 2026-01-29 |
| Příznak pro zapnutí | enable_nodejs_dgram_module |
| Příznak pro vypnutí | disable_nodejs_dgram_module |
enable_nodejs_dgram_module příznak zapíná node:dgram stub modulu ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2026-01-29 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:dgram API.
Povolit node:inspector modul
| Výchozí od | 2026-01-29 |
| Příznak pro zapnutí | enable_nodejs_inspector_module |
| Příznak pro vypnutí | disable_nodejs_inspector_module |
enable_nodejs_inspector_module příznak zapíná node:inspector stub modulu ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2026-01-29 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:inspector API.
Povolit node:sqlite modul
| Výchozí od | 2026-01-29 |
| Příznak pro zapnutí | enable_nodejs_sqlite_module |
| Příznak pro vypnutí | disable_nodejs_sqlite_module |
enable_nodejs_sqlite_module příznak zapíná node:sqlite stub modulu ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2026-01-29 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:sqlite API.
Povolit node:_stream_wrap modul
| Výchozí od | 2026-01-29 |
| Příznak pro zapnutí | enable_nodejs_stream_wrap_module |
| Příznak pro vypnutí | disable_nodejs_stream_wrap_module |
enable_nodejs_stream_wrap_module příznak zapíná node:_stream_wrap stub modulu ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2026-01-29 nebo novější, když nodejs_compat je zapnuté.
require() vrací výchozí export
| Výchozí od | 2026-01-22 |
| Příznak pro zapnutí | require_returns_default_export |
| Příznak pro vypnutí | require_returns_namespace |
Když require_returns_default_export je povoleno, require() vrátí výchozí export modulu, pokud existuje. Pokud výchozí export neexistuje, vrátí se místo toho měnitelná kopie objektu module namespace.
Toto odpovídá chování, které Node.js používá pro require(esm), kde je vrácen výchozí export, pokud je k dispozici. Tento příznak je užitečný pro frameworky jako Next.js, které očekávají možnost upravovat exporty modulů.
Dříve, require() vždy vracelo objekt jmenného prostoru modulu (objekt jako {default: module.exports}).
Duplikujte stuby v parametrech RPC, místo abyste přenášeli vlastnictví
| Výchozí od | 2026-01-20 |
| Příznak pro zapnutí | rpc_params_dup_stubs |
| Příznak pro vypnutí | rpc_params_transfer_stubs |
Mění sémantiku vlastnictví RPC stubů vložených v parametrech RPC volání a opravuje problémy s kompatibilitou s Cap'n Web ↗.
Když systém Workers RPC byla poprvé zavedena, měly RPC stuby vložené do parametrů nebo návratové hodnoty jiného volání převedeno vlastnictví. To znamená, že původní stub byl implicitně uvolněn a do cíle byla doručena jeho duplicitní kopie.
To se ale špatně kombinuje s dalším pravidlem: u volané strany se všechny stubs přijaté v parametrech volání po návratu volání automaticky disposed. Kombinace těchto dvou pravidel znamená, že pokud proxujete volání (tedy implementace RPC jen předá stejné parametry v dalším RPC volání), stubs v parametrech se disposed dvakrát. Horší je, že pokud si konečný příjemce stubu chce po skončení volání ponechat duplikát, nemusí to fungovat, protože kopie stubu ve vrstvě proxy se stejně disposed, čímž se spojení přeruší.
Z tohoto důvodu čistě JS implementace Cap'n Web přešla na pravidlo, že stubs v params NEPŘEDÁVAJÍ vlastnictví, pouze se duplikují. Tento compat flag upravuje vestavěné RPC ve Workers Runtime tak, aby odpovídalo chování Cap'n Web.
Jedním z běžných případů použití, které toto řeší, jsou klienti přihlašující se k odběru callbacků z Durable Object přes Cap'n Web. V tomto případě klientská aplikace předá callback funkci přes WebSocket Cap'n Web bezstavovému Workeru, který stub dále přeposílá přes Workers RPC do Durable Object. Durable Object uchovává dup() stubu, aby ho bylo možné později znovu zavolat a informovat klienta o událostech. Před zavedením tohoto příznaku to bohužel nefungovalo: jakmile funkce subscribe sama skončila, stub Cap'n Web ve stateless workeru se uvolnil (protože šlo o parametr volání, které skončilo, a nebyl dup(), tedy nebyl v kontextu bezstavového workeru znovu duplikován). Když se Durable Object později pokusil zavolat callback odběru, obdržel by chybu „Error: RPC stub used after being disposed“, i přesto, že byl pečlivě dup(), tedy stub na jeho konci znovu zduplikoval.
Iterovatelné tělo fetch respektuje přepsání toString/toPrimitive
| Výchozí od | 2026-01-15 |
| Příznak pro zapnutí | fetch_iterable_type_support_override_adjustment |
| Příznak pro vypnutí | no_fetch_iterable_type_support_override_adjustment |
Když fetch_iterable_type_support_override_adjustment je povoleno, objekty předané jako tělo fetch() Request nebo Response které jsou synchronně iterovatelné, ale zároveň mají vlastní toString nebo Symbol.toPrimitive metoda nebude považována za iterovatelnou. Místo toho bude zpracována jako objekt převedený na řetězec, což odpovídá předchozímu chování u takových objektů.
Tento příznak zpřesňuje chování zavedené fetch_iterable_type_support příznak a automaticky se povolí, když fetch_iterable_type_support je povoleno po 2026-01-15.
Odstranění BOM UTF-8 ve streamu readAllText()
| Výchozí od | 2026-01-13 |
| Příznak pro zapnutí | strip_bom_in_read_all_text |
| Příznak pro vypnutí | do_not_strip_bom_in_read_all_text |
Když strip_bom_in_read_all_text je povoleno, readAllText() metoda u streamů odstraní úvodní byte order mark (BOM) v kódování UTF-8, pokud je přítomen, což odpovídá očekávanému chování podle standardů webové platformy.
Dříve byl do vráceného řetězce zahrnut BOM, což mohlo při parsování textového obsahu způsobit neočekávané chování.
Povolit node:cluster modul
| Výchozí od | 2025-12-04 |
| Příznak pro zapnutí | enable_nodejs_cluster_module |
| Příznak pro vypnutí | disable_nodejs_cluster_module |
enable_nodejs_cluster_module příznak zapíná node:cluster stub modulu ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2025-12-04 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:cluster API.
Povolit node:domain modul
| Výchozí od | 2025-12-04 |
| Příznak pro zapnutí | enable_nodejs_domain_module |
| Příznak pro vypnutí | disable_nodejs_domain_module |
enable_nodejs_domain_module příznak zapíná node:domain stub modulu ve Workers. Mějte na paměti, že node:domain je zastaralá již v samotném Node.js.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2025-12-04 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:domain API.
Povolit node:punycode modul
| Výchozí od | 2025-12-04 |
| Příznak pro zapnutí | enable_nodejs_punycode_module |
| Příznak pro vypnutí | disable_nodejs_punycode_module |
enable_nodejs_punycode_module příznak zapíná node:punycode modul ve Workers. Mějte na paměti, že node:punycode je zastaralá již v samotném Node.js.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2025-12-04 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:punycode API.
Povolit node:trace_events modul
| Výchozí od | 2025-12-04 |
| Příznak pro zapnutí | enable_nodejs_trace_events_module |
| Příznak pro vypnutí | disable_nodejs_trace_events_module |
enable_nodejs_trace_events_module příznak zapíná node:trace_events stub modulu ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2025-12-04 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:trace_events API.
Povolit node:wasi modul
| Výchozí od | 2025-12-04 |
| Příznak pro zapnutí | enable_nodejs_wasi_module |
| Příznak pro vypnutí | disable_nodejs_wasi_module |
enable_nodejs_wasi_module příznak zapíná node:wasi stub modulu ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2025-12-04 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:wasi API.
Povolit rychlou optimalizaci struktur JSG
| Výchozí od | 2025-12-03 |
| Příznak pro zapnutí | enable_fast_jsg_struct |
| Příznak pro vypnutí | disable_fast_jsg_struct |
Když enable_fast_jsg_struct je povoleno, interní typy struktur používané rozhraními API běhového prostředí Workers se vytvářejí pomocí efektivnějšího vzoru, který zkracuje dobu vytváření objektů.
Volitelná pole však budou explicitně nastavena na undefined místo toho, aby byla z objektu zcela vynechána, což představuje pozorovatelnou změnu chování. Kód, který kontroluje přítomnost vlastnosti pomocí "key" in obj nebo Object.hasOwn(obj, "key") se může chovat jinak, protože volitelná pole, která dříve chyběla, budou nyní přítomna s hodnotou undefined.
Pro kontrolu hodnoty upřednostněte obj.key !== undefined přes "key" in obj.
Povolení ctx.exports
| Výchozí od | 2025-11-17 |
| Příznak pro zapnutí | enable_ctx_exports |
| Příznak pro vypnutí | disable_ctx_exports |
Tento příznak povoluje ctx.exports API, který obsahuje automaticky nakonfigurované loopback bindingy pro exporty vašeho Workeru na nejvyšší úrovni. Díky tomu nemusíte konfigurovat explicitní bindingy pro váš WorkerEntrypoints a Durable Object namespaces definované ve stejném Workeru.
Automatické trasování
| Příznak pro zapnutí | enable_workers_observability_tracing |
Tento příznak povolí Workers Tracing ve výchozím nastavení, pokud máte ve svém konfiguračním souboru Wrangleru nastaveno následující:
{
"observability": {
"enabled": true
}
}Automatické trasování můžete také výslovně zapnout bez příznaku a se staršími daty kompatibility nastavením následujícího:
{
"observability": {
"traces": {
"enabled": true
}
}
}Povolit node:vm modul
| Výchozí od | 2025-10-01 |
| Příznak pro zapnutí | enable_nodejs_vm_module |
| Příznak pro vypnutí | disable_nodejs_vm_module |
enable_nodejs_vm_module příznak zapíná node:vm stub modulu ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2025-10-01 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:vm API.
Povolit node:console modul
| Výchozí od | 2025-09-21 |
| Příznak pro zapnutí | enable_nodejs_console_module |
| Příznak pro vypnutí | disable_nodejs_console_module |
enable_nodejs_console_module příznak zapíná node:console modul ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2025-09-21 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:console API.
Povolit ověřování vstupního bodu workflow
| Výchozí od | 2025-09-20 |
| Příznak pro zapnutí | enable_validate_workflow_entrypoint |
| Příznak pro vypnutí | disable_validate_workflow_entrypoint |
Když enable_validate_workflow_entrypoint je povoleno, provádějí se další ověřovací kontroly, aby bylo zajištěno, že Workflows jsou definovány a používány správně. Díky tomu lze chyby v konfiguraci odhalit už při nahrávání, a ne až za běhu.
Povolit node:fs modul
| Výchozí od | 2025-09-15 |
| Příznak pro zapnutí | enable_nodejs_fs_module |
| Příznak pro vypnutí | disable_nodejs_fs_module |
enable_nodejs_fs_module příznak zapíná node:fs modul ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2025-09-15 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:fs API.
Povolit node:os modul
| Výchozí od | 2025-09-15 |
| Příznak pro zapnutí | enable_nodejs_os_module |
| Příznak pro vypnutí | disable_nodejs_os_module |
enable_nodejs_os_module příznak zapíná node:os modul ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2025-09-15 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:os API.
Povolit process implementace v2
| Výchozí od | 2025-09-15 |
| Příznak pro zapnutí | enable_nodejs_process_v2 |
| Příznak pro vypnutí | disable_nodejs_process_v2 |
Je-li povoleno po 2025-09-15, enable_nodejs_process_v2 příznak spolu s nodejs_compat příznak kompatibility
zajišťuje komplexní implementaci kompatibilní s Node.js process implementace, která nahrazuje předchozí minimální implementaci procesu
poskytující pouze omezené nextTick, env, exit, getBuiltinModule, platform a features vlastnosti.
Chcete-li po datu kompatibility pokračovat v používání předchozí minimální implementace, nastavte disable_nodejs_process_v2 příznak místo toho.
Většina vlastností objektu process podporovaných v Node.js je implementována, kde je to možné, přičemž nepodporované funkce mají exporty typu undefined. Viz dokumentace k procesu pro podrobnosti implementace specifické pro Workers.
Povolení modulů HTTP serveru Node.js
| Výchozí od | 2025-09-01 |
| Příznak pro zapnutí | enable_nodejs_http_server_modules |
| Příznak pro vypnutí | disable_nodejs_http_server_modules |
enable_nodejs_http_server_modules příznak zpřístupňuje HTTP serverové moduly Node.js,
jako například node:_http_server ve Workers.
disable_nodejs_http_server_modules příznak zakazuje dostupnost těchto
serverových modulů.
Tím se umožní kompatibilita s knihovnami Node.js a existujícím kódem, který používá standardní API HTTP serveru Node.js. Dostupná funkcionalita zahrnuje:
http.createServer()pro vytváření HTTP serverůhttp.Servertřída pro instance serveruhttp.ServerResponsepro zpracování odpovědí serveru
Tento příznak je nutné použít v kombinaci s enable_nodejs_http_modules příznak,
kterým povolíte všechny funkce node:http.
Tento příznak se automaticky povolí pro Workery používající
datum kompatibility 2025-09-01 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o Node.js HTTP API.
Povolit node:http2 modul
| Výchozí od | 2025-09-01 |
| Příznak pro zapnutí | enable_nodejs_http2_module |
| Příznak pro vypnutí | disable_nodejs_http2_module |
enable_nodejs_http2_module příznak zapíná node:http2 stuby modulů ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2025-09-01 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:http2 API.
Odebrat API Node.js s ukončenou podporou
| Výchozí od | 2025-09-01 |
| Příznak pro zapnutí | remove_nodejs_compat_eol |
| Příznak pro vypnutí | add_nodejs_compat_eol |
Když remove_nodejs_compat_eol je povoleno, rozhraní API, jejichž podpora v Node.js skončila, budou pro Workers odstraněna. Když je zakázáno, rozhraní API jsou přítomná, ale mohou být nefunkčními zástupnými objekty.
Tento příznak je souhrnný. Jakmile v konkrétních verzích Node.js dosáhnou další API konce podpory (EOL), přidávají se nové příznaky kompatibility specifické pro danou verzi (například remove_nodejs_compat_eol_v22, remove_nodejs_compat_eol_v23, a remove_nodejs_compat_eol_v24) které tento příznak od svých příslušných dat implikuje.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2025-09-01 nebo novější, když nodejs_compat je zapnuté.
Odebrat API Node.js 23.x s ukončenou podporou
| Výchozí od | 2025-09-01 |
| Příznak pro zapnutí | remove_nodejs_compat_eol_v23 |
| Příznak pro vypnutí | add_nodejs_compat_eol_v23 |
Když remove_nodejs_compat_eol_v23 je povoleno, rozhraní API, jejichž podpora v Node.js 23.x skončila (konec podpory červen 2025), jsou odstraněna.
Tento příznak se automaticky povolí, když remove_nodejs_compat_eol_v24 příznak je povolen po 2025-09-01.
Odstranění hlavičky Authorization při cross-origin přesměrování
| Výchozí od | 2025-09-01 |
| Příznak pro zapnutí | strip_authorization_on_cross_origin_redirect |
| Příznak pro vypnutí | retain_authorization_on_cross_origin_redirect |
Když strip_authorization_on_cross_origin_redirect je povoleno, Authorization hlavička se při přesměrování na jiný origin automaticky odstraní. Toto chování vyžaduje aktuální Specifikace Fetch API ↗.
Tento požadavek byl do specifikace Fetch přidán v roce 2022, poté, co Cloudflare Workers původně implementoval zpracování fetch. Workers tento požadavek původně neimplementovaly, proto je nové chování podmíněno compatibility flag.
Původní chování nebylo samo o sobě nebezpečné a za určitých okolností mohlo být žádoucí. Jde například o případ, kdy API vyžadující autorizaci potřebuje přesměrovat na nový hostitel a přitom chce, aby klient zároveň odeslal své přihlašovací údaje. Podle nového chování takové přesměrování přihlašovací údaje automaticky neobsahuje. Původní chování však mohlo při přesměrování na nedůvěryhodné origin servery vést k neúmyslnému úniku přihlašovacích údajů.
Chcete-li zachovat staré chování, nastavte retain_authorization_on_cross_origin_redirect příznak.
Povolení dostupnosti node:http a node:https moduly
| Výchozí od | 2025-08-15 |
| Příznak pro zapnutí | enable_nodejs_http_modules |
| Příznak pro vypnutí | disable_nodejs_http_modules |
enable_nodejs_http_modules příznak zpřístupňuje Node.js
node:http a node:https moduly ve Workers (pouze klientská API).
disable_nodejs_http_modules příznak zakazuje dostupnost těchto
modulů.
Tím se umožní kompatibilita s knihovnami Node.js a existujícím kódem, který používá standardní API node:http a node:https pro vytváření požadavků HTTP. Dostupná funkcionalita zahrnuje:
http.request()ahttps.request()pro vytváření požadavků HTTP/HTTPShttp.get()ahttps.get()pro vytváření požadavků GET- Objekty požadavku a odpovědi se standardními Node.js API
- Podpora standardních metod, hlaviček a možností HTTP
Viz Dokumentace Node.js ↗ pro další podrobnosti o Node.js API.
Zpřístupněte globální MessageChannel a MessagePort
| Výchozí od | 2025-08-15 |
| Příznak pro zapnutí | expose_global_message_channel |
| Příznak pro vypnutí | no_expose_global_message_channel |
Když expose_global_message_channel příznak nastaven, Workers zpřístupní
MessageChannel a MessagePort konstruktory globálně.
Když no_expose_global_message_channel příznak nastaven, Workers je
nezpřístupní.
Zakázat globální obslužné rutiny pro Python Workers
| Výchozí od | 2025-08-14 |
| Příznak pro zapnutí | python_no_global_handlers |
| Příznak pro vypnutí | disable_python_no_global_handlers |
Když python_no_global_handlers příznak nastaven, Python Workers vypnou
globální handlery a jejich použití vynutí prostřednictvím výchozích tříd entrypoint.
Povolit cache: no-cache standardní API HTTP
| Výchozí od | 2025-08-07 |
| Příznak pro zapnutí | cache_no_cache_enabled |
| Příznak pro vypnutí | cache_no_cache_disabled |
Když povolíte cache_no_cache_enabled příznak kompatibility můžete zadat no-cache
hodnotu pro cache vlastnost rozhraní Request. Pokud tento kompatibilní příznak není
povolen, nebo cache_option_disabled je nastaveno, runtime Workers vyvolá TypeError se slovy
Unsupported cache mode: no-cache.
Když je tento příznak povolen, můžete Cloudflare pokynout, aby vynutil revalidaci
odpovědi ze subrequestu, který odešlete z Workeru pomocí fetch()
API:
Když no-cache je zadáno:
-
Všechny požadavky obsahují hlavičky
Pragma: no-cacheaCache-Control: no-cachejsou na nich nastaveny. -
Podpožadavky na origin servery, které nejsou hostovány na Cloudflare, nutí cache Cloudflare k revalidaci s origin serverem.
Revalidace s originem znamená, že požadavek Workeru nejprve vyhledá shodu ve vyrovnávací paměti Cloudflare a poté:
- Pokud dojde ke shodě, na origin server se odešle podmíněný požadavek bez ohledu na to, zda je shoda aktuální, nebo zastaralá. Pokud se prostředek nezměnil, vrátí se jeho verze uložená v mezipaměti. Pokud se prostředek změnil, stáhne se z origin serveru, aktualizuje se v mezipaměti a vrátí se.
- Pokud ke shodě nedojde, Workers odešle na origin server standardní požadavek a odpověď uloží do mezipaměti.
Příklady s použitím cache: 'no-cache':
const response = await fetch("https://example.com", { cache: "no-cache" });Hodnotu cache lze také nastavit na Request objekt.
const request = new Request("https://example.com", { cache: "no-cache" });
const response = await fetch(request);Nastavte this hodnota obslužných rutin událostí EventTarget
| Výchozí od | 2025-08-01 |
| Příznak pro zapnutí | set_event_target_this |
| Příznak pro vypnutí | no_set_event_target_this |
Když set_event_target_this příznak nastaven, Workers nastaví this hodnotu
obslužných rutin událostí na EventTarget instance, na které je událost
odesílána. To je v souladu se specifikací.
Když pak no_set_event_target_this příznak nastaven, Workers nenastaví
this hodnota obslužných rutin událostí a bude undefined místo toho.
Nastavit úplné hlavičky přeposílaných e-mailů
| Výchozí od | 2025-08-01 |
| Příznak pro zapnutí | set_forwardable_email_full_headers |
| Příznak pro vypnutí | set_forwardable_email_single_headers |
Původní verze hlaviček odesílaných do edgeworkeru byla u konkrétních názvů hlaviček, jako To a Cc, zkrácena na
jedinou hodnotu. S
set_forwardable_email_full_headers příznak nastaven, Workers obdrží úplné
hodnoty hlaviček ve skriptu workeru.
Přísná shoda s Web Platform Tests (WPT)
| Příznak pro zapnutí | pedantic_wpt |
| Příznak pro vypnutí | non_pedantic_wpt |
pedantic_wpt příznak zapíná přísný soulad s Web Platform Tests (WPT)
ve Workers. Zatím to ovlivňuje pouze Event a EventTarget API, ale
v budoucnu bude rozšířeno na další API. Pro tento příznak není ve výchozím nastavení určeno
datum aktivace.
Sváže snímky AsyncLocalStorage s požadavkem
| Výchozí od | 2025-06-16 |
| Příznak pro zapnutí | bind_asynclocalstorage_snapshot_to_request |
| Příznak pro vypnutí | do_not_bind_asynclocalstorage_snapshot_to |
Rámec AsyncLocalStorage může zachytávat hodnoty, které jsou svázané s
aktuálním kontextem požadavku. Uživatel to nemá vždy plně pod kontrolou, protože
rámec úložiště ALS se používá i k šíření interních rozpětí trasování (trace spans) a
hodnot zadaných uživatelem. Když se bind_asynclocalstorage_snapshot_to_request
příznak je nastaven, runtime naváže snapshot / vázané funkce na aktuální
kontext požadavku a vyvolá chybu, pokud jsou vázané funkce volány
mimo požadavek, ve kterém byly vytvořeny.
do_not_bind_asynclocalstorage_snapshot_to příznak toto chování vypíná.
Vyvolání chyby u nerozpoznaných import assertions
| Výchozí od | 2025-06-16 |
| Příznak pro zapnutí | throw_on_unrecognized_import_assertion |
| Příznak pro vypnutí | ignore_unrecognized_import_assertion |
throw_on_unrecognized_import_assertion příznak řídí, jak Workers zpracovávají
atributy importu, které runtime nerozpozná. Dříve Workers
všechny nerozpoznané atributy importu ignorovaly, což není v souladu se
specifikací. Od runtime se očekává, že při výskytu nerozpoznaného atributu
importu vyhodí chybu.
Když ignore_unrecognized_import_assertion příznak nastaven, Workers budou
ignorovat nerozpoznané atributy importu.
Povolit eval při spuštění
| Výchozí od | 2025-06-01 |
| Příznak pro zapnutí | allow_eval_during_startup |
| Příznak pro vypnutí | disallow_eval_during_startup |
Když allow_eval_during_startup příznak nastaven, Workers mohou použít eval()
a new Function(text) během fáze spouštění skriptu Workeru. To
umožňuje dynamické spouštění kódu na začátku životního cyklu Workeru.
Když disallow_eval_during_startup příznak nastaven, použití eval() nebo
new Function(text) během fáze spouštění vyvolá chybu.
Povolit Request.signal pro příchozí požadavky
| Příznak pro zapnutí | enable_request_signal |
| Příznak pro vypnutí | disable_request_signal |
Když použijete enable_request_signal příznak kompatibility můžete připojit event listener k Request objekty pomocí signal vlastnost ↗. Díky tomu můžete provádět úlohy ve chvíli, kdy klient zruší požadavek na váš Worker.
Požadavek Cache API cf přepisuje pravidla cache
| Výchozí od | 2025-05-19 |
| Příznak pro zapnutí | cache_api_request_cf_overrides_cache_rules |
| Příznak pro vypnutí | no_cache_api_request_cf_overrides_cache_rules |
Když cache_api_request_cf_overrides_cache_rules je povoleno, nastavení mezipaměti zadaná v cf objekt požadavku předaného do Cache API přepíše pravidla cache. Platí to pouze pro weby vlastněné uživatelem nebo weby v režimu šedého mraku (grey-clouded).
Toto je protějšek Cache API k request_cf_overrides_cache_rules příznak, který se vztahuje na fetch() API.
Povolit navigator.language
| Výchozí od | 2025-05-19 |
| Příznak pro zapnutí | enable_navigator_language |
| Příznak pro vypnutí | disable_navigator_language |
Když enable_navigator_language příznak nastaven, navigator.language vlastnost
bude ve Workers k dispozici. Prozatím je hodnota navigator.language bude
vždy en.
Když disable_navigator_language příznak nastaven, navigator.language vlastnost
nebude k dispozici.
Zakázání importovatelného prostředí
| Příznak pro zapnutí | disallow_importable_env |
| Příznak pro vypnutí | allow_importable_env |
Když disallow_importable_env příznak povolen, Workers nedovolí importovat
proměnné prostředí přes cloudflare:workers modul a nenaplní
proměnné prostředí v globálním process.env objekt, pokud je povolena kompatibilita
s Node.js.
Pro tento příznak není nastaveno žádné výchozí datum povolení.
Povolit FinalizationRegistry a WeakRef
| Výchozí od | 2025-05-05 |
| Příznak pro zapnutí | enable_weak_ref |
| Příznak pro vypnutí | disable_weak_ref |
Umožňuje použití FinalizationRegistry ↗ a WeakRef ↗ vestavěných modulů.
FinalizationRegistryumožňuje zaregistrovat callback pro úklid, který se spustí po odstranění objektu garbage collectorem.WeakRefvytvoří slabou referenci na objekt, což umožňuje jeho uvolnění garbage collectorem, pokud neexistují žádné jiné silné reference.
:::note[Chování]
FinalizationRegistry cleanup callbacky se mohou spustit kdykoli během životního cyklu požadavku, a to i po dokončení vašeho volaného handleru (podobně jako ctx.waitUntil()). Tyto callbacky nemají přidružený asynchronní kontext. V jejich rámci nelze provádět žádné I/O operace, včetně odesílání událostí do tail Workeru.
:::
:::caution
Tyto API jsou v zásadě nedeterministické. Časování a provádění garbage collection jsou nepředvídatelné a vy by se na ně nemělo spoléhat pro klíčovou logiku programu. Navíc callbacky pro úklid registrované pomocí FinalizationRegistry může nikdy se nespustí, mimo jiné v případech, kdy nedojde ke spuštění garbage collection nebo je váš Worker vyřazen.
:::
Předání AbortSignal příchozího požadavku do subrequestů
| Příznak pro zapnutí | request_signal_passthrough |
| Příznak pro vypnutí | no_request_signal_passthrough |
Když request_signal_passthrough příznak nastaven, AbortSignal příchozího
požadavku se předá do subrequestů, když je požadavek přeposlán
do subrequestu pomocí fetch() API.
Ten no_request_signal_passthrough příznak nastaven, AbortSignal příchozího
požadavku se nepředá dál.
Implementace URLPattern odpovídající specifikaci
| Výchozí od | 2025-05-01 |
| Příznak pro zapnutí | urlpattern_standard |
| Příznak pro vypnutí | urlpattern_original |
Původní URLPattern implementace nebyla plně v souladu s WHATWG URLPattern Standard ↗, což vedlo k řadě problémů hlášených uživateli.
S urlpattern_standard zapnuto, Workers používá implementaci URLPattern odpovídající specifikaci. Jde o změnu, která ruší zpětnou kompatibilitu s původním chováním, a proto je podmíněna příznakem kompatibility.
Pokud používáte URLPattern a po aktualizaci data kompatibility narazíte na neočekávané změny chování, můžete nastavit urlpattern_original pro návrat k předchozí implementaci.
Navigační požadavky upřednostňují doručování assetů
| Výchozí od | 2025-04-01 |
| Příznak pro zapnutí | assets_navigation_prefers_asset_serving |
| Příznak pro vypnutí | assets_navigation_has_no_effect |
U Workers s statická aktiva a se zapnutým tímto příznakem kompatibility mají navigační požadavky (požadavky, které mají Sec-Fetch-Mode: navigate hlavička) se přednostně obslouží naší logikou pro obsluhu aktiv, i když se nenajde přesná shoda aktiva. To se hodí zejména pro aplikace, které fungují v režimu Režim jednostránkové aplikace (SPA) nebo mít vlastní stránky 404, protože to nyní znamená, že náhradní stránky 200 /index.html a 404 /404.html bude odeslán ještě před spuštěním skriptu Workeru, takže se za něj neúčtuje žádný poplatek.
Bez tohoto příznaku bude runtime i nadále uplatňovat starší chování, kdy pro každý požadavek, který přesně neodpovídá statickému assetu, vyvolá Worker skript (pokud existuje).
Když assets.run_worker_first = true je nastaveno, tento compatibility flag nemá žádný účinek. assets.run_worker_first = true nastavení zajišťuje, že se skript Workeru spustí dříve než jakákoli logika pro obsluhu assetů.
Povolení automatického doplňování process.env
| Výchozí od | 2025-04-01 |
| Příznak pro zapnutí | nodejs_compat_populate_process_env |
| Příznak pro vypnutí | nodejs_compat_do_not_populate_process_env |
Když povolíte nodejs_compat_populate_process_env příznak kompatibility a nodejs_compat
příznak je také povolen, process.env bude naplněn hodnotami ze všech vazeb s textovými nebo JSON hodnotami.
Toto znamená, že pokud jste přidali proměnné prostředí,
secrets, nebo metadata verze
bindings, k těmto hodnotám lze přistoupit přes process.env.
const apiClient = ApiClient.new({ apiKey: process.env.API_KEY });
const LOG_LEVEL = process.env.LOG_LEVEL || "info";Díky tomu je přístup k těmto hodnotám jednodušší a odpovídá běžným vzorům Node.js, což může snížit pracnost a pomoci s kompatibilitou se stávajícími knihovnami Node.js.
Pokud uživatelé nechtějí, aby tyto hodnoty byly dostupné přes process.env, mohou použít
nodejs_compat_do_not_populate_process_env příznak. V takovém případě process.env bude nadále
dostupný, hodnoty do něj však nebudou přidávány automaticky.
Pokud disallow_importable_env příznak kompatibility je nastaven, process.env také
nebude vyplněno.
Queue consumers nečekají na ctx.waitUntil() k vyřešení
| Příznak pro zapnutí | queue_consumer_no_wait_for_wait_until |
Standardně Queues Consumer Workers potvrzují zprávy až poté, co se vyřeší promises předané do ctx.waitUntil() se vyřešily. Toto chování může u konzumentů front, kteří využívají ctx.waitUntil() pro pomalé zpracování zpráv. Výchozí chování je popsáno v Průvodce konfigurací Queues Consumer.
Tento Consumer Worker je příkladem Workeru, který využívá ctx.waitUntil(). Při výchozím chování tento consumer Worker potvrdí dávku zpráv až poté, co se dokončí funkce sleep.
export default {
async fetch(request, env, ctx) {
// omitted
},
async queue(batch, env, ctx) {
console.log(`received batch of ${batch.messages.length} messages to queue ${batch.queue}`);
for (let i = 0; i < batch.messages.length; ++i) {
console.log(`message #${i}: ${JSON.stringify(batch.messages[i])}`);
}
ctx.waitUntil(sleep(30 * 1000));
}
};
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}Pokud queue_consumer_no_wait_for_wait_until příznak povolen, konzumenti Queues už nebudou čekat na promises předané do ctx.waitUntil() se vyřeší, než dojde k potvrzení zpráv. To může zlepšit výkon konzumentů front, kteří využívají ctx.waitUntil(). Pokud je flag povolený, consumer Worker ve výše uvedeném příkladu potvrdí dávku, aniž by čekal na dokončení funkce sleep.
Použití tohoto příznaku neovlivní chování ctx.waitUntil(). ctx.waitUntil() bude nadále prodlužovat dobu života vašeho konzumentského Workeru, aby mohl fungovat i poté, co byla dávka zpráv potvrzena.
Aplikovat opravu zpětného tlaku TransformStream
| Výchozí od | 2024-12-16 |
| Příznak pro zapnutí | fixup-transform-stream-backpressure |
| Příznak pro vypnutí | original-transform-stream-backpressure |
Původní implementace TransformStream obsahovala chybu, kvůli které
docházelo k selhání signalizace backpressure po prvním zápisu do transformace.
Oprava bohužel může způsobit, že stávající kód napsaný jako řešení této chyby
přestane fungovat. Proto fixup-transform-stream-backpressure příznak kompatibility je
k dispozici pro povolení této opravy.
Oprava je ve výchozím nastavení zapnutá u compatibility dates 2024-12-16 a novějších.
Chcete-li obnovit původní logiku backpressure, vypněte opravu pomocí
original-transform-stream-backpressure příznak.
Zakázat top-level await v require(...)
| Výchozí od | 2024-12-02 |
| Příznak pro zapnutí | disable_top_level_await_in_require |
| Příznak pro vypnutí | enable_top_level_await_in_require |
Workers implementuje možnost používat styl Node.js require(...) metoda
pro import modulů do balíčku Workeru. Tento mechanismus historicky umožňoval,
aby požadované moduly používaly top-level await. To ovšem není s Node.js
kompatibilní.
disable_top_level_await_in_require příznak kompatibility způsobí require()
selhat, pokud modul používá top-level await. Tento příznak je ve výchozím nastavení povolen
pro datum kompatibility 2024-12-02 nebo pozdější.
Chcete-li obnovit původní chování umožňující top-level await, použijte
enable_top_level_await_in_require příznak kompatibility.
Povolit cache: no-store standardní API HTTP
| Výchozí od | 2024-11-11 |
| Příznak pro zapnutí | cache_option_enabled |
| Příznak pro vypnutí | cache_option_disabled |
Když povolíte cache_option_enabled příznak kompatibility můžete zadat hodnotu pro cache vlastnost rozhraní Request.
Pokud tento kompatibilní příznak není povolen, nebo cache_option_disabled je nastaveno, runtime Workers vyvolá Error se slovy The 'cache' field on 'RequestInitializerDict' is not implemented.
Když je tento příznak povolen, můžete Cloudflare pokynout, aby neukládal do mezipaměti odpověď ze subrequestu, který odešlete z Workeru pomocí fetch() API:
Jediná možnost cache povolená s cache_option_enabled je 'no-store'.
Zadání jakékoli jiné hodnoty způsobí, že Workers runtime vyhodí TypeError se zprávou Unsupported cache mode: <the-mode-you-specified>.
Když no-store je zadáno:
-
Všechny požadavky obsahují hlavičky
Pragma: no-cacheaCache-Control: no-cachejsou na nich nastaveny. -
Podpožadavky na origin servery, které nejsou hostovány na Cloudflare, obcházejí cache Cloudflare.
Příklady s použitím cache: 'no-store':
const response = await fetch("https://example.com", { cache: "no-store" });Hodnotu cache lze také nastavit na Request objekt.
const request = new Request("https://example.com", { cache: "no-store" });
const response = await fetch(request);Globální fetch() striktně veřejné
| Příznak pro zapnutí | global_fetch_strictly_public |
| Příznak pro vypnutí | global_fetch_private_origin |
Když global_fetch_strictly_public příznak kompatibility je povolen, globální fetch() funkce bude směrovat požadavky striktně tak, jako by byly odeslány z veřejného internetu.
To znamená, že požadavky na vlastní zónu Workeru se vrátí zpět k „hlavnímu vchodu“ Cloudflare a budou zpracovány jako požadavek z internetu, což může vést i k opětovnému nasměrování zpět na stejný Worker.
Když global_fetch_strictly_public není povoleno, takové požadavky se směrují na původní server zóny, přičemž se ignorují všechny Workery přiřazené k danému URL a obcházejí se také bezpečnostní nastavení Cloudflare.
Správné řešení promise mezi požadavky
| Výchozí od | 2024-10-14 |
| Příznak pro zapnutí | handle_cross_request_promise_resolution |
| Příznak pro vypnutí | no_handle_cross_request_promise_resolution |
V minulosti bylo možné vyřešit promise v nesprávném kontextu požadavku, což mohlo vést k naplánování pokračování promise ve špatném kontextu a způsobit chyby, jež se obtížně diagnostikují.
S handle_cross_request_promise_resolution zapnuto, pokračování příslibů se naplánují ke spuštění ve správném kontextu požadavku, pokud je ještě aktivní, nebo se zahodí s upozorněním, pokud správný kontext už skončil.
Metody HTTP velkými písmeny
| Výchozí od | 2024-10-14 |
| Příznak pro zapnutí | upper_case_all_http_methods |
| Příznak pro vypnutí | no_upper_case_all_http_methods |
Očekává se, že HTTP metody budou psány velkými písmeny. Podle specifikace fetch platí, že pokud je
metoda zadána jako get, post, put, delete, head, nebo options,
se od implementací očekává, že metodu převedou na velká písmena. U všech ostatních názvů metod
se obecně očekává, že vyvolají chybu jako nerozpoznané (například patch by bylo
chybou, když PATCH je přijata). To je poněkud restriktivní, i když to odpovídá specifikaci.
Tento příznak upravuje chování tak, že před analýzou převede všechny metody
na velká písmena, takže metoda je vždy rozpoznána, pokud jde o známou
metodu.
Chcete-li obnovit standardní chování, použijte no_upper_case_all_http_methods
příznak kompatibility.
Automaticky nastavit Symbol.toStringTag pro objekty Workers API
| Výchozí od | 2024-09-26 |
| Příznak pro zapnutí | set_tostring_tag |
| Příznak pro vypnutí | do_not_set_tostring_tag |
Byla provedena změna, která nastavuje Symbol.toStringTag na všech objektech Workers API,
aby se opravilo několik chyb v souladu se specifikací. Tato změna se však ukázala
být náročnější na zpětnou kompatibilitu, než se očekávalo. do_not_set_tostring_tag compat
příznak obnoví původní chování pro data kompatibility 2024-09-26 nebo starší.
Povolit node:zlib modul
| Výchozí od | 2024-09-23 |
| Příznak pro zapnutí | nodejs_zlib |
| Příznak pro vypnutí | no_nodejs_zlib |
nodejs_zlib příznak zapíná node:zlib modul ve Workers.
Tento příznak se automaticky povolí pro Workery používající datum kompatibility 2024-09-23 nebo novější, když nodejs_compat je zapnuté.
Viz Dokumentace Node.js ↗ další podrobnosti o node:zlib API.
Umožňuje zadat vlastní port při vytváření subrequestu pomocí fetch() API
| Výchozí od | 2024-09-02 |
| Příznak pro zapnutí | allow_custom_ports |
| Příznak pro vypnutí | ignore_custom_ports |
Když je tento příznak povolen a při vytváření subrequestu zadáte port pomocí fetch() API, použije se číslo portu, které zadáte.
Když odešlete subrequest na web, který používá Cloudflare („Orange Clouded“), lze zadat pouze porty podporované reverzní proxy Cloudflare lze zadat. Pokud se pokusíte zadat nepodporovaný port, bude ignorován.
Když odešlete subrequest na web, který nepoužívá Cloudflare („Grey Clouded“), lze zadat libovolný port.
Například:
const response = await fetch("https://example.com:8000");S allow_custom_ports by výše uvedený příklad načetl https://example.com:8000 místo
https://example.com:443.
Mějte na paměti, že vytvoření klienta WebSocket voláním new WebSocket(url) bude tuto flag také respektovat.
WritableStream abort vyprázdní frontu čekajících zápisů
| Výchozí od | 2024-09-02 |
| Příznak pro zapnutí | internal_writable_stream_abort_clears_queue |
| Příznak pro vypnutí | internal_writable_stream_abort_does_not_clear_queue |
Při použití původní implementace WritableStream („interní“ streamy) abort() operace se dříve zpracovávala líně, což znamenalo, že se fronta čekajících zápisů nevyprázdnila, dokud nebyla znovu zpracována. Toto chování mohlo způsobit zaseknutí streamu, pokud consumer přestal odebírat data.
S internal_writable_stream_abort_clears_queue zapnuto, fronta se okamžitě vyprázdní při abort(), což zabraňuje zaseknutí v případech, kdy konzument přestal zpracovávat zápisy.
Správně zjistěte typ MIME blobu z content-type hlavičky
| Výchozí od | 2024-06-03 |
| Příznak pro zapnutí | blob_standard_mime_type |
| Příznak pro vypnutí | blob_legacy_mime_type |
Při volání response.blob.type(), typ MIME se nyní správně určí z content-type hlavičky podle specifikace WHATWG ↗.
Použijte standardní parsování URL v fetch()
| Výchozí od | 2024-06-03 |
| Příznak pro zapnutí | fetch_standard_url |
| Příznak pro vypnutí | fetch_legacy_url |
fetch_standard_url příznak způsobí, že fetch() použít WHATWG URL Standard ↗ pravidel parsování. Původní implementace vyvolala výjimku TypeError: Fetch API cannot load chyby u některých adres URL, u kterých je standardní parsování nevyvolá, například když je před adresou URL bílý znak. Chyby URL se nyní vyvolají ihned při volání new Request() s neplatnou URL adresou. Dříve se chyby URL vyhazovaly pouze jednou fetch() byla volána.
Vrácení prázdného Uint8Array při posledním čtení BYOB
| Výchozí od | 2024-05-13 |
| Příznak pro zapnutí | internal_stream_byob_return_view |
| Příznak pro vypnutí | internal_stream_byob_return_undefined |
V původní implementaci BYOB ("Bring your own buffer") ReadableStreams, read() metoda by vrátila undefined když byl stream uzavřen a nebyla k dispozici žádná další data ke čtení. Toto chování nebylo v souladu se standardem ReadableStream chování, které vrací prázdný Uint8Array při uzavření streamu.
Když internal_stream_byob_return_view příznak použit, BYOB read() implementuje standardní chování.
const resp = await fetch('https://example.org');
const reader = resp.body.getReader({ mode: 'byob' });
await result = await reader.read(new Uint8Array(10));
if (result.done) {
// The result gives us an empty Uint8Array...
console.log(result.value.byteLength); // 0
// However, it is backed by the same underlying memory that was passed
// into the read call.
console.log(result.value.buffer.byteLength); // 10
}Podpora Content-Encoding Brotli
| Výchozí od | 2024-04-29 |
| Příznak pro zapnutí | brotli_content_encoding |
| Příznak pro vypnutí | no_brotli_content_encoding |
Když brotli_content_encoding příznak kompatibility je povolen, Workers podporuje br kódování obsahu a může požadovat a odpovídat daty kódovanými pomocí Brotli ↗ kompresní algoritmus. Ten snižuje množství dat, která je potřeba načíst, a lze ho použít k předání původních komprimovaných dat klientovi. Více informací najdete v Fetch API dokumentace s podrobnostmi.
Stuby Durable Object a Service Bindings podporují RPC
| Výchozí od | 2024-04-03 |
| Příznak pro zapnutí | rpc |
| Příznak pro vypnutí | no_rpc |
Když je tento příznak zapnutý, Durable Object stuby a Service Bindings podporují RPC. To znamená, že tyto objekty nyní vypadají, jako by definovaly úplně každý název metody. Zavolání jakéhokoli názvu metody odešle RPC vzdálenému Durable Object nebo službě Worker.
Pro většinu aplikací nebude mít tato změna žádný dopad, pokud ji nevyužíváte. Je však možné, že některý existující kód bude ovlivněn, pokud explicitně kontroluje existenci názvů metod, které dříve na těchto typech nebyly definovány. V praxi jsme se například setkali s kódem, který iteruje přes vazby a snaží se automaticky rozpoznat jejich typy podle toho, jaké metody implementují. Takový kód nyní uvidí, že Service Bindings implementují každou metodu, a proto si je může mylně vyložit jako nějaký jiný typ. V případech, které jsme zaznamenali, byl dopad neškodný (nic se ve skutečnosti nerozbilo), ale z opatrnosti jsme tuto změnu prozatím skryli za příznak.
Zpracování vlastních thenables
| Výchozí od | 2024-04-01 |
| Příznak pro zapnutí | unwrap_custom_thenables |
| Příznak pro vypnutí | no_unwrap_custom_thenables |
S unwrap_custom_thenables příznak nastaven, různá API Workers, která přijímají promises, budou
správně zpracovávat i vlastní thenables (objekty s then metoda), které nejsou nativními promises, ale
mají být za takové považovány). Například waitUntil metoda v rámci ExecutionContext
objekt bude správně zpracovávat vlastní thenables, což umožňuje jejich použití místo nativních promises.
async fetch(req, env, ctx) {
ctx.waitUntil({ then(res) {
// Resolve the thenable after 1 second
setTimeout(res, 1000);
} });
// ...
}Fetchery už nemají pomocné metody get/put/delete
| Výchozí od | 2024-03-26 |
| Příznak pro zapnutí | fetcher_no_get_put_delete |
| Příznak pro vypnutí | fetcher_has_get_put_delete |
Durable Object stuby a Service Bindings oba implementují fetch() metoda, která se chová podobně jako globální fetch() metoda, ale požadavky se místo toho odesílají na cíl reprezentovaný objektem, nikoli na základě směrování podle URL adresy.
V minulosti API objekty, které měly takový fetch() metoda měla také metody get(), put(), a delete(). Tyto metody byly tenkými wrappery kolem fetch() což by provedlo odpovídající HTTP metodu a podle potřeby automaticky zajistilo zápis/čtení těl requestu/response.
Tyto metody byly velmi ranou myšlenkou z doby před mnoha lety, nikdy ale nebyly skutečně zdokumentovány, a proto se používaly jen zřídka (pokud vůbec). Povolením fetcher_no_get_put_delete, nebo nastavením data kompatibility na nebo po 2024-03-26 tyto metody pro váš Worker zakazuje.
Tato změna otevírá cestu k tomu, abyste v budoucnu mohli definovat vlastní metody s těmito názvy. Bez této změny byste nemohli definovat vlastní get, put, a delete metody, protože by byly v konfliktu s těmito vestavěnými pomocnými metodami.
Queues odesílá zprávy v JSON formát
| Výchozí od | 2024-03-18 |
| Příznak pro zapnutí | queues_json_messages |
| Příznak pro vypnutí | no_queues_json_messages |
S queues_json_messages příznak nastaven, vazby Queue serializují hodnoty předané do send() nebo sendBatch() do formátu JSON ve výchozím nastavení (pokud není zadán žádný konkrétní contentType je zadáno).
Potlačit globální importScripts()
| Výchozí od | 2024-03-04 |
| Příznak pro zapnutí | no_global_importscripts |
| Příznak pro vypnutí | global_importscripts |
Potlačuje globální importScripts() funkci. Tato metoda byla součástí globálního rozsahu Workers, ale byla výslovně označena jako neimplementovaná. Přítomnost funkce však mohla u některých knihoven způsobovat problémy. Tento příznak kompatibility funkci z globálního rozsahu odstraňuje.
Node.js AsyncLocalStorage
| Příznak pro zapnutí | nodejs_als |
| Příznak pro vypnutí | no_nodejs_als |
Zpřístupňuje rozhraní Node.js AsyncLocalStorage ↗ API ve Workers.
Python Workers
| Příznak pro zapnutí | python_workers |
Tento příznak zapíná plnohodnotnou podporu Pythonu. Python Workers implementují většinu Pythonu standardní knihovna, podporují všechny vazby, proměnná prostředí, a secrets, a integraci s objekty a funkcemi JavaScriptu prostřednictvím foreign function interface.
Zachování pole publicExponent u WebCrypto
| Výchozí od | 2023-12-01 |
| Příznak pro zapnutí | crypto_preserve_public_exponent |
| Příznak pro vypnutí | no_crypto_preserve_public_exponent |
V rozhraní WebCrypto API publicExponent pole algoritmu klíčů RSA dříve bylo ArrayBuffer. Pomocí tohoto flagu publicExponent je Uint8Array jak vyžaduje specifikace.
Vectorize dotaz, u kterého lze volitelně vrátit metadata
| Výchozí od | 2023-11-08 |
| Příznak pro zapnutí | vectorize_query_metadata_optional |
| Příznak pro vypnutí | vectorize_query_original |
Nastavená hodnota na vectorize_query_metadata_optional znamená, že operace dotazu Vectorize by měla přijímat novější argumenty s returnValues a returnMetadata zadán samostatně namísto staršího argumentu returnVectors. Tím se mění i formát návratové hodnoty. Pokud byly hodnoty vektoru označeny k vrácení, návratová hodnota je nyní zploštělý (flattened) vektorový objekt s score připojen tam, kde dříve obsahoval vnořený vektorový objekt.
Komprese WebSocket
| Výchozí od | 2023-08-15 |
| Příznak pro zapnutí | web_socket_compression |
| Příznak pro vypnutí | no_web_socket_compression |
Workers runtime zpočátku kompresi WebSocket nepodporoval, protože ji neumožňovala ani první implementace WebSocket. Runtime proto historicky odstraňoval nebo ignoroval Sec-WebSocket-Extensions hlavičku, nyní je ale schopen plně dodržovat WebSocket Compression RFC. Protože mnoho klientů pravděpodobně odesílá Sec-WebSocket-Extensions: permessage-deflate svým Workers ještě dnes (new WebSocket(url) to v prohlížečích nastavuje automaticky), rozhodli jsme se zachovat původní chování, pokud tento příznak chybí.
Pokud je tento příznak přítomen, prostředí Workers runtime dokáže používat WebSocket Compression jak u příchozích, tak u odchozích WebSocket připojení.
Stejně jako v prohlížečích, volání new WebSocket(url) ve Workeru automaticky nastaví Sec-WebSocket-Extensions: permessage-deflate hlavička. Pokud používáte nestandardní fetch() API k získání WebSocketu můžete zahrnout Sec-WebSocket-Extensions hlavičku s hodnotou permessage-deflate a zahrňte libovolné z kompresních parametrů definovaných v RFC-7692 ↗.
Přísná kontrola kryptografických chyb
| Výchozí od | 2023-08-01 |
| Příznak pro zapnutí | strict_crypto_checks |
| Příznak pro vypnutí | no_strict_crypto_checks |
Provádět dodatečnou kontrolu chyb v rozhraní Web Crypto API v souladu se specifikací a odmítat potenciálně nebezpečné parametry klíčů:
- Při generování klíčů RSA musí být velikost klíče násobkem 128 bitů, jinak může boringssl klíč zkrátit.
- Velikost importovaných klíčů RSA musí být minimálně 256 bitů a maximálně 16384 bitů, stejně jako u nově vygenerovaných klíčů.
- Veřejný exponent pro importované klíče RSA je omezen na běžně používané hodnoty
[3, 17, 37, 65537]. - V souladu se specifikací se při pokusu o import veřejného klíče ECDH s neprázdným seznamem usages vyvolá chyba.
Přísná kontrola chyb komprese
| Výchozí od | 2023-08-01 |
| Příznak pro zapnutí | strict_compression_checks |
| Příznak pro vypnutí | no_strict_compression_checks |
Provádět dodatečnou kontrolu chyb v rozhraní Compression Streams API a vyvolat chybu, pokud DecompressionStream obsahuje koncová data navíc nebo se uzavře dříve, než jsou poskytnuta veškerá komprimovaná data.
Přepsání nastavení cache u Cache Rules v request.cf objekt pro Fetch API
| Výchozí od | 2025-04-02 |
| Příznak pro zapnutí | request_cf_overrides_cache_rules |
| Příznak pro vypnutí | no_request_cf_overrides_cache_rules |
Tento příznak mění chování mezipaměti při vyžádání assetů prostřednictvím Fetch API. Nastavení cache uvedená v request.cf objekt, jako například cacheEverything a cacheTtl, mají nyní přednost před jakýmkoli Cache Rules nastaveno.
Data Bot Management
| Výchozí od | 2023-08-01 |
| Příznak pro zapnutí | no_cf_botmanagement_default |
| Příznak pro vypnutí | cf_botmanagement_default |
Tento příznak zjednodušuje požadavky Workers tím, že omezuje zbytečné vlastnosti v request.cf objekt.
Když je příznak zapnutý, ať už ve výchozím stavu po 2023-08-01, nebo nastavením no_cf_botmanagement_default příznak, Cloudflare zahrne pouze Objekt Bot Management ve Workeru request.cf pokud má účet přístup k Bot Management.
Když je příznak vypnutý, Cloudflare zahrne výchozí objekt Bot Management bez ohledu na to, zda má účet k Bot Management nárok.
Argument value u metod delete() a has() v URLSearchParams
| Výchozí od | 2023-07-01 |
| Příznak pro zapnutí | urlsearchparams_delete_has_value_arg |
| Příznak pro vypnutí | no_urlsearchparams_delete_has_value_arg |
WHATWG zavedla další volitelné argumenty do URLSearchParams objekt delete() ↗ a has() ↗ metody, které umožňují přesnější kontrolu nad odstraňováním parametrů dotazu. Vzhledem k tomu,
že argumenty jsou volitelné a mění chování metod, pokud jsou zadané, hrozí riziko
narušení stávajícího kódu. Pokud máte datum kompatibility nastavené na 1. července 2023 nebo později, bude tento příznak kompatibility ve výchozím nastavení zapnutý.
Jako příklad toho, jak by tato změna mohla narušit stávající kód, uvažujme kód, který používá Array forEach() metoda pro procházení řady parametrů určených ke smazání:
const usp = new URLSearchParams();
// ...
['abc', 'xyz'].forEach(usp.delete.bind(usp)); forEach() automaticky předává funkci, která je zadána jako argument, více parametrů. Před přidáním nových standardních parametrů by tyto další argumenty byly ignorovány.
Nyní však mají doplňkové argumenty význam a mění chování funkce. S tímto příznakem by bylo nutné výše uvedený příklad upravit takto:
const usp = new URLSearchParams();
// ...
['abc', 'xyz'].forEach((key) => usp.delete(key));V přesměrováních použijte implementaci URL odpovídající specifikaci
| Výchozí od | 2023-03-14 |
| Příznak pro zapnutí | response_redirect_url_standard |
| Příznak pro vypnutí | response_redirect_url_original |
Změňte implementaci URL použitou v Response.redirect() aby vyhovoval specifikaci (WHATWG URL Standard).
Dynamic Dispatch Exception Propagation
| Výchozí od | 2023-03-01 |
| Příznak pro zapnutí | dynamic_dispatch_tunnel_exceptions |
| Příznak pro vypnutí | dynamic_dispatch_treat_exceptions_as_500 |
Dříve při použití Workers for Platforms dynamic dispatch API pro odeslání HTTP požadavku uživatelskému Workeru. Pokud uživatelský Worker vyvolá výjimku, dynamic dispatch Worker obdrží HTTP 500 chybu bez těla. Když dynamic_dispatch_tunnel_exceptions příznak kompatibility je povolen, výjimka se místo toho propaguje zpět do Workeru dynamic dispatch. fetch() volání ve Workeru pro dynamic dispatch vyvolá stejnou výjimku. To odpovídá obdobnému chování service bindings a Durable Objects.
Headers podporuje getSetCookie()
| Výchozí od | 2023-03-01 |
| Příznak pro zapnutí | http_headers_getsetcookie |
| Příznak pro vypnutí | no_http_headers_getsetcookie |
Přidá getSetCookie() ↗ metodu na Hlavičky ↗ API ve Workers.
const response = await fetch("https://example.com");
let cookieValues = response.headers.getSetCookie();Kompatibilita s Node.js
| Výchozí od | 2026-08-04 |
| Příznak pro zapnutí | nodejs_compat |
| Příznak pro vypnutí | no_nodejs_compat |
Povoluje rozhraní Node.js API ve Workers Runtime. Pro data kompatibility 2026-08-04 nebo novější Workers povolí oba nodejs_compat a nodejs_compat_v2 ve výchozím nastavení.
Mějte na paměti, že některá rozhraní Node.js API jsou povolena pouze v případě, že datum kompatibility vašeho Workeru odpovídá některému z následujících dat nebo je pozdější:
| Node.js API | Povoleno pomocí nodejs_compat od dne nebo později |
|---|---|
Zakázat Top-level Await v require() |
2024-12-02 |
process.env |
2025-04-01 |
node:http, node:https |
2025-08-15 |
http.server |
2025-09-01 |
Některé moduly Node.js jsou ve Workers dostupné pouze jako nefunkční stuby. Tyto moduly lze importovat nebo require, ale neposkytují funkční implementace odpovídajících Node.js API. Stuby existují kvůli kompatibilitě s balíčky, které kontrolují existenci modulu, a v kódu aplikace by se neměly používat přímo.
Následující stuby se automaticky povolí pouze v případě, že nodejs_compat je povoleno a datum kompatibility vašeho Workeru je na uvedeném datu nebo po něm:
| Stub modul | Povoleno pomocí nodejs_compat od dne nebo později |
Povolit příznak | Zakázat příznak |
|---|---|---|---|
node:http2 ↗ |
2025-09-01 |
enable_nodejs_http2_module |
disable_nodejs_http2_module |
node:vm ↗ |
2025-10-01 |
enable_nodejs_vm_module |
disable_nodejs_vm_module |
node:cluster ↗ |
2025-12-04 |
enable_nodejs_cluster_module |
disable_nodejs_cluster_module |
node:domain ↗ |
2025-12-04 |
enable_nodejs_domain_module |
disable_nodejs_domain_module |
node:trace_events ↗ |
2025-12-04 |
enable_nodejs_trace_events_module |
disable_nodejs_trace_events_module |
node:wasi ↗ |
2025-12-04 |
enable_nodejs_wasi_module |
disable_nodejs_wasi_module |
node:_stream_wrap |
2026-01-29 |
enable_nodejs_stream_wrap_module |
disable_nodejs_stream_wrap_module |
node:dgram ↗ |
2026-01-29 |
enable_nodejs_dgram_module |
disable_nodejs_dgram_module |
node:inspector ↗ |
2026-01-29 |
enable_nodejs_inspector_module |
disable_nodejs_inspector_module |
node:sqlite ↗ |
2026-01-29 |
enable_nodejs_sqlite_module |
disable_nodejs_sqlite_module |
node:child_process ↗ |
2026-03-17 |
enable_nodejs_child_process_module |
disable_nodejs_child_process_module |
node:readline ↗ |
2026-03-17 |
enable_nodejs_readline_module |
disable_nodejs_readline_module |
node:repl ↗ |
2026-03-17 |
enable_nodejs_repl_module |
disable_nodejs_repl_module |
node:tty ↗ |
2026-03-17 |
enable_nodejs_tty_module |
disable_nodejs_tty_module |
node:v8 ↗ |
2026-03-17 |
enable_nodejs_v8_module |
disable_nodejs_v8_module |
node:worker_threads ↗ |
2026-03-17 |
enable_nodejs_worker_threads_module |
disable_nodejs_worker_threads_module |
Při povolování nodejs_compat, doporučujeme používat nejnovější verzi Wrangler CLI, a nejnovější datum kompatibility, aby byla kompatibilita co nejvyšší. Některé starší verze Wrangleru vkládají další polyfilly, které už nejsou potřeba, pokud Worker používá novější datum kompatibility, protože je v takovém případě poskytuje přímo runtime Workers.
Pro data kompatibility 2026-08-04 nebo novější, nodejs_compat a nodejs_compat_v2 se nepoužívají, protože stejné chování zajišťuje datum kompatibility. Stávající projekty tyto příznaky při aktualizaci data kompatibility odstraňovat nemusí. Chcete-li kompatibilitu s Node.js zcela vypnout, odstraňte kladné příznaky, pokud jsou přítomné. Poté přidejte oba no_nodejs_compat a no_nodejs_compat_v2.
Pokud se vám při použití určitého balíčku npm ve Workers zobrazují chyby, nejprve zkuste aktualizovat datum kompatibility a použít nejnovější verzi Wrangler CLI nebo Cloudflare Vite Plugin. Pokud potíže přetrvávají, nahlaste je prosím otevření issue na GitHubu ↗.
Konstruktory Streams
| Výchozí od | 2022-11-30 |
| Příznak pro zapnutí | streams_enable_constructors |
| Příznak pro vypnutí | streams_disable_constructors |
Přidá work-in-progress new ReadableStream() a new WritableStream() konstruktory podložené podkladovými zdroji (sources) a propady (sinks) v JavaScriptu.
Konstruktor TransformStream odpovídající specifikaci
| Výchozí od | 2022-11-30 |
| Příznak pro zapnutí | transformstream_enable_standard_constructor |
| Příznak pro vypnutí | transformstream_disable_standard_constructor |
Dříve new TransformStream() konstruktor neodpovídal standardu Streams API. Použijte transformstream_enable_standard_constructor abyste povolili zpětně nekompatibilní změnu, která zajistí soulad konstruktoru s požadavky. Musí se použít v kombinaci s streams_enable_constructors příznak.
Moduly CommonJS neexportují modulový jmenný prostor (namespace)
| Výchozí od | 2022-10-31 |
| Příznak pro zapnutí | export_commonjs_default |
| Příznak pro vypnutí | export_commonjs_namespace |
Moduly CommonJS dříve exportovaly modulový jmenný prostor (objekt jako { default: module.exports }) místo toho, abyste exportovali jen module.exports. Pokud je tento flag povolený, export je pevně daný.
Nepoužívejte throw v asynchronních funkcích
| Výchozí od | 2022-10-31 |
| Příznak pro zapnutí | capture_async_api_throws |
| Příznak pro vypnutí | do_not_capture_async_api_throws |
capture_async_api_throws příznak kompatibility zajistí, že v souladu se standardním API se asynchronní funkce odmítnou (reject) pouze tehdy, pokud vyvolají chybu. Opačný do_not_capture_async_api_throws příznak znamená, že asynchronní funkce obsahující chybu ji mohou vyhodit synchronně místo toho, aby ji odmítly (reject).
Nová implementace parseru URL
| Výchozí od | 2022-10-31 |
| Příznak pro zapnutí | url_standard |
| Příznak pro vypnutí | url_original |
Původní implementace URL ↗ API ve Workers plně nevyhovovalo WHATWG URL Standard ↗, které se v několika ohledech liší, mimo jiné:
-
Původní implementace sloučila posloupnosti více lomítek do jediného lomítka:
new URL("https://example.com/a//b").toString() === "https://example.com/a/b" -
Původní implementace by vyvolala
"TypeError: Invalid URL string."pokud narazí na neplatné percent-encoded escape sekvence, jakohttps://example.com/a%%b. -
Původní implementace by u některého obsahu prováděla percent-encode nebo percent-decode jinak:
new URL("https://example.com/a%40b?c d%20e?f").toString() === "https://example.com/a@b?c+d+e%3Ff" -
Původní implementaci chybělo novější
URLfunkce, jakoURL.canParse()↗.
Nastavte datum kompatibility svého Workeru na datum po 2022-10-31 nebo povolte url_standard příznak kompatibility, kterým zapnete plně specifikaci odpovídající URL implementace API.
Viz response_redirect_url_standard příznak kompatibility , což ovlivňuje implementaci URL použitou v Response.redirect().
R2 bucket list respektuje include možnost
| Výchozí od | 2022-08-04 |
| Příznak pro zapnutí | r2_list_honor_include |
S r2_list_honor_include příznak nastaven, include argument do R2 list možnosti se respektuje. Se starším datem kompatibility a bez tohoto příznaku se include argument se implicitně chová jako include: ["httpMetadata", "customMetadata"].
Nenahrazujte null na TypeError
| Výchozí od | 2022-06-01 |
| Příznak pro zapnutí | dont_substitute_null_on_type_error |
| Příznak pro vypnutí | substitute_null_on_type_error |
V runtime byla chyba, kvůli které se neplatné hodnoty při předání do vestavěných API někdy chybně sloučily s null. Místo toho TypeError měla být vyvolána. dont_substitute_null_on_type_error opravuje toto chování tak, aby se za těchto okolností správně vyhodila chyba.
Minimální počet subrequestů
| Výchozí od | 2022-04-05 |
| Příznak pro zapnutí | minimal_subrequests |
| Příznak pro vypnutí | no_minimal_subrequests |
S minimal_subrequests příznak nastaven, fetch() subrequesty odeslané na endpointy ve vlastní zóně Workeru (takzvané subrequesty v rámci stejné zóny) mají omezenou sadu funkcí, které se na ně uplatňují. Tyto funkce se obecně na subrequesty v rámci stejné zóny neměly uplatňovat od začátku, takže se očekává jen velmi málo změn chování viditelných pro uživatele. Konkrétně mohou Workers s novým flagem pozorovat následující změny chování:
- Těla odpovědí nebudou před odesláním do runtime Workers oportunisticky komprimována pomocí gzip. Pokud Worker čte tělo odpovědi, přečte je v prostém textu, jak tomu bylo vždy, takže vypnutí této funkce zabraňuje zbytečné dekompresi. Pokud Worker naopak odpověď jen předává klientovi, oportunisticky zkomprimuje tělo odpovědi pomocí gzip až HTTP proxy Cloudflare, a to za runtime Workers. Změna chování, kterou skript Workeru může pozorovat, by měla spočívat v tom, že některé
Content-Encoding: gziphlavičky se už nebudou zobrazovat. - Automatic Platform Optimization se dříve za určitých okolností mohla uplatnit jak na iniciační požadavek Workeru, tak na jeho podřízené požadavky. Nově se bude uplatňovat pouze na iniciační požadavek.
- Předběžné načítání odkazů (link prefetching) se nyní bude vztahovat pouze na odpověď Workeru, nikoli na odpovědi na dílčí požadavky Workeru.
Globální navigator
| Výchozí od | 2022-03-21 |
| Příznak pro zapnutí | global_navigator |
| Příznak pro vypnutí | no_global_navigator |
S global_navigator příznak nastaven, nový globální navigator vlastnost dostupná i uvnitř Workers. Momentálně zpřístupňuje pouze jedinou navigator.userAgent vlastnost, jejíž hodnota je nastavena na 'Cloudflare-Workers'. Tuto vlastnost lze použít ke spolehlivému zjištění, zda kód běží v prostředí Workers.
Nepoužívejte Custom Origin Trust Store pro externí subrequesty
| Výchozí od | 2022-03-08 |
| Příznak pro zapnutí | no_cots_on_external_fetch |
| Příznak pro vypnutí | cots_on_external_fetch |
no_cots_on_external_fetch příznak zakazuje použití Custom Origin Trust Store při odesílání externích (grey-clouded) subrequestů z Cloudflare Workeru.
Settery/gettery na prototypech objektů API
| Výchozí od | 2022-01-31 |
| Příznak pro zapnutí | workers_api_getters_setters_on_prototype |
| Příznak pro vypnutí | workers_api_getters_setters_on_instance |
Vlastnosti objektů Workers API byly původně definovány jako instanční vlastnosti, nikoli jako vlastnosti prototypu. To narušovalo dědění na úrovni JavaScriptu a bránilo podtřídám ve správném přepsání getterů/setterů nadřazené třídy. Tento flag řídí přelomovou změnu, která tyto gettery/settery nastavuje místo toho v šabloně prototypu.
Tato změna se vztahuje na:
AbortSignalAbortControllerBlobBodyDigestStreamEventFileRequestReadableStreamReadableStreamDefaultReaderReadableStreamBYOBReaderResponseTextDecoderTextEncoderTransformStreamURLWebSocketWritableStreamWritableStreamDefaultWriter
Durable Object stub.fetch() vyžaduje úplnou URL adresu
| Výchozí od | 2021-11-10 |
| Příznak pro zapnutí | durable_object_fetch_requires_full_url |
| Příznak pro vypnutí | durable_object_fetch_allows_relative_url |
Původně platilo, že při vytváření požadavku na Durable Object voláním stub.fetch(url), jako vstup byla přijata relativní URL adresa. URL adresa se interpretovala relativně vůči zástupné URL adrese http://fake-host, a výsledná absolutní adresa URL byla doručena do fetch() handler. Toto chování bylo chybné: plné adresy URL měly být povinné. Tento příznak plné adresy URL vyžaduje.
fetch() nesprávně interpretuje neznámé protokoly jako HTTP
| Výchozí od | 2021-11-10 |
| Příznak pro zapnutí | fetch_refuses_unknown_protocols |
| Příznak pro vypnutí | fetch_treats_unknown_protocols_as_http |
Původně, pokud fetch() funkci byla předána adresa URL určující jiný protokol než http: nebo https:, tiše by to zpracoval, jako by šlo o http:. Například fetch() by se mohlo zdát, že přijímá ftp: URL adresy, ale ve skutečnosti místo toho odesílal HTTP požadavky.
Mějte na paměti, že Cloudflare Workers podporuje nestandardní rozšíření fetch() aby podporoval WebSockets. Pokud ale odesíláte HTTP požadavek, který má zahájit handshake WebSocket, měli byste stále použít http: nebo https: jako protokol, nikoli ws: ani wss:.
ws: a wss: schémata URL jsou určena k použití společně s new WebSocket() konstruktor, který podporuje výhradně WebSocket. Rozšíření fetch() je navržena tak, aby podporovala HTTP i WebSocket v rámci stejného požadavku (odpověď může, ale nemusí zahájit WebSocket), a proto jsou všechny požadavky považovány za HTTP.
Streams BYOB reader odpojuje buffer
| Výchozí od | 2021-11-10 |
| Příznak pro zapnutí | streams_byob_reader_detaches_buffer |
| Příznak pro vypnutí | streams_byob_reader_does_not_detach_buffer |
Runtime Workers původně neodpojoval ArrayBuffers z uživatelem poskytnutých TypedArrays při použití Čtečky BYOB read() metoda, jak vyžaduje specifikace Streams, což znamenalo, že bylo možné nechtěně znovu použít stejný buffer pro více read() volání. Tato změna přizpůsobuje Workers specifikaci.
Uživatelský kód by se nikdy neměl pokoušet znovu použít ArrayBuffer která byla předána do Čtečky BYOB read() metoda. Místo toho může uživatelský kód znovu použít ArrayBuffer která slouží jako podklad pro výsledek read() promise, jak je uvedeno v příkladu níže.
// Consume and discard `readable` using a single 4KiB buffer.
let reader = readable.getReader({ mode: "byob" });
let arrayBufferView = new Uint8Array(4096);
while (true) {
let result = await reader.read(arrayBufferView);
if (result.done) break;
// Optionally something with `result` here.
// Re-use the same memory for the next `read()` by creating
// a new Uint8Array backed by the result's ArrayBuffer.
arrayBufferView = new Uint8Array(result.value.buffer);
}Novější rozšiřující metoda readAtLeast() vždy odpojí ArrayBuffer a toto nastavení příznaku funkce ho neovlivňuje.
FormData parsování podporuje File
| Výchozí od | 2021-11-03 |
| Příznak pro zapnutí | formdata_parser_supports_files |
| Příznak pro vypnutí | formdata_parser_converts_files_to_strings |
FormData API ↗ se používá k parsování dat (zejména těl HTTP požadavků) v multipart/form-data formát.
Původní implementace runtime Workers FormData API nesprávně převádělo nahrané soubory na řetězce. Proto formData.get("filename") by vrátilo řetězec s obsahem souboru místo File objekt. Tato změna problém řeší tím, že soubory jsou nyní reprezentovány pomocí File jak je uvedeno ve standardu.
HTMLRewriter zpracování <esi:include>
| Příznak pro zapnutí | html_rewriter_treats_esi_include_as_void_tag |
Standard HTML5 definuje pevnou sadu prvků jako prázdné prvky (void elements), což znamená, že nepoužívají koncovou značku: <area>, <base>, <br>, <col>, <command>, <embed>, <hr>, <img>, <input>, <keygen>, <link>, <meta>, <param>, <source>, <track>, a <wbr>.
HTML5 nerozpoznává syntaxi samouzavíracích značek XML. Například <script src="foo.js" /> neurčuje element script bez těla. </script> koncová značka je stále vyžadována. /> syntax není v HTML5 vůbec rozpoznávána a zpracovává se stejně jako >. Mnoho vývojářů ale tuto syntaxi stále rádo používá, je to pozůstatek z XHTML, standardu, který se kolem roku 2000 neprosadil.
<esi:include> a <esi:comment> jsou dva tagy, které nejsou součástí standardu HTML5, ale používají se jako součást Edge Side Includes ↗, technologii pro úpravu HTML na straně serveru. Tyto značky by neměly obsahovat žádný obsah a obvykle se zapisují pomocí samostatně uzavírající syntaxe XML.
HTMLRewriter byl navržen pro parsování standardního HTML5, nikoli ESI. Bylo by však užitečné mít možnost implementovat některé části ESI pomocí HTMLRewriter. Za tímto účelem tento compatibility flag způsobí, že HTMLRewriter zacházet s <esi:include> a <esi:comment> jako void tagy, aby je bylo možné správně parsovat a zpracovat.
Experimentální příznaky
Tyto příznaky lze povolit prostřednictvím compatibility_flags, ale zatím není naplánováno, že by se k žádnému konkrétnímu datu staly výchozími.
Queue consumers nečekají na ctx.waitUntil() k vyřešení
| Příznak pro zapnutí | queue_consumer_no_wait_for_wait_until |
Standardně Queues Consumer Workers potvrzují zprávy až poté, co se vyřeší promises předané do ctx.waitUntil() se vyřešily. Toto chování může u konzumentů front, kteří využívají ctx.waitUntil() pro pomalé zpracování zpráv. Výchozí chování je popsáno v Průvodce konfigurací Queues Consumer.
Tento Consumer Worker je příkladem Workeru, který využívá ctx.waitUntil(). Při výchozím chování tento consumer Worker potvrdí dávku zpráv až poté, co se dokončí funkce sleep.
export default {
async fetch(request, env, ctx) {
// omitted
},
async queue(batch, env, ctx) {
console.log(`received batch of ${batch.messages.length} messages to queue ${batch.queue}`);
for (let i = 0; i < batch.messages.length; ++i) {
console.log(`message #${i}: ${JSON.stringify(batch.messages[i])}`);
}
ctx.waitUntil(sleep(30 * 1000));
}
};
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}Pokud queue_consumer_no_wait_for_wait_until příznak povolen, konzumenti Queues už nebudou čekat na promises předané do ctx.waitUntil() se vyřeší, než dojde k potvrzení zpráv. To může zlepšit výkon konzumentů front, kteří využívají ctx.waitUntil(). Pokud je flag povolený, consumer Worker ve výše uvedeném příkladu potvrdí dávku, aniž by čekal na dokončení funkce sleep.
Použití tohoto příznaku neovlivní chování ctx.waitUntil(). ctx.waitUntil() bude nadále prodlužovat dobu života vašeho konzumentského Workeru, aby mohl fungovat i poté, co byla dávka zpráv potvrzena.
HTMLRewriter zpracování <esi:include>
| Příznak pro zapnutí | html_rewriter_treats_esi_include_as_void_tag |
Standard HTML5 definuje pevnou sadu prvků jako prázdné prvky (void elements), což znamená, že nepoužívají koncovou značku: <area>, <base>, <br>, <col>, <command>, <embed>, <hr>, <img>, <input>, <keygen>, <link>, <meta>, <param>, <source>, <track>, a <wbr>.
HTML5 nerozpoznává syntaxi samouzavíracích značek XML. Například <script src="foo.js" /> neurčuje element script bez těla. </script> koncová značka je stále vyžadována. /> syntax není v HTML5 vůbec rozpoznávána a zpracovává se stejně jako >. Mnoho vývojářů ale tuto syntaxi stále rádo používá, je to pozůstatek z XHTML, standardu, který se kolem roku 2000 neprosadil.
<esi:include> a <esi:comment> jsou dva tagy, které nejsou součástí standardu HTML5, ale používají se jako součást Edge Side Includes ↗, technologii pro úpravu HTML na straně serveru. Tyto značky by neměly obsahovat žádný obsah a obvykle se zapisují pomocí samostatně uzavírající syntaxe XML.
HTMLRewriter byl navržen pro parsování standardního HTML5, nikoli ESI. Bylo by však užitečné mít možnost implementovat některé části ESI pomocí HTMLRewriter. Za tímto účelem tento compatibility flag způsobí, že HTMLRewriter zacházet s <esi:include> a <esi:comment> jako void tagy, aby je bylo možné správně parsovat a zpracovat.