Panduan Cloudflare Workers SEO
cara membuat SEO teknis perubahan pada Cloudflare Workers — fetch handler, HTMLRewriter untuk canonical/hreflang/JSON-LD injection, KV-backed redirects, Cache API vs edge cache vs Cache-Control, cloaking boundary, dan bagaimana bot Fight Mode dapat block Googlebot.
Bahasa
1 sinyal bukti di halaman ini
- Data sumber tertautgooglebot.json
Cloudflare Workers SEO adalah melakukan SEO teknis pada Cloudflare's serverless runtime: sebuah Worker hanya sees permintaan -nya route matches, dan setiap satu dari itu enters satu fetch handler di mana Anda rewrite permintaan, respons headers, dan respons body. Body rewriting berjalan melalui HTMLRewriter — sebenarnya mechanism untuk injecting sebuah tag canonical, memperbaiki hreflang, atau menambahkan JSON-LD tanpa sebuah CMS deploy — dan ini perlu untuk menjadi idempotent terhadap missing, duplicate, dan non-HTML cases. Redirects di scale belong di KV atau D1; Bulk Redirects/aturan adalah simpler untuk kecil sets, tetapi pick satu owner per URL so sistem jangan conflict. Three terpisah hal share kata cache — Workers Cache API, Cloudflare edge cache, dan origin Cache-Control — dan conflating them adalah mengapa sebuah injected tag seems untuk tidak tampilkan up; diagnose oleh cache key, layer, TTL, dan invalidation. hard aturan adalah cloaking: apply identical logic untuk Googlebot dan pengguna. paling Workers-spesifik self-inflicted wound adalah bot Fight Mode blocking Googlebot pada sebuah pipeline Anda WAF izinkan-aturan jangan bahkan reach. Ship setiap SEO-affecting perubahan dengan recorded versi metadata dan sebuah tested rollback, lalu verify dengan GSC pemeriksaan URL dan CF-Cache-Status header. See Edge SEO hub untuk umum concept.
TL;DR — Cloudflare Workers adalah little programs itu jalankan pada Cloudflare’s network, di front dari Anda nyata situs web. sebuah Worker dapat tambahkan sebuah redirect, perbaiki sebuah meta tag, atau inject sebuah tag canonical sebagai halaman flies past — tanpa touching Anda CMS atau menunggu pada developers. ini halaman adalah hands-pada, code-tingkat versi dari lebih luas Edge SEO idea: bagaimana Anda sebenarnya melakukan ini pada Workers secara khusus. satu aturan Anda dapat’t break: whatever sebuah Worker perubahan, ini memiliki untuk perubahan untuk Google dan nyata pengunjung yang sama cara. Menunjukkan Google sesuatu berbeda adalah cloaking.
Apa sebuah Cloudflare Worker adalah, di plain istilah
jika Anda situs adalah pada Cloudflare, setiap permintaan dari sebuah pengunjung (atau dari Googlebot) melewati melalui Cloudflare’s network sebelum ini reaches Anda sebenarnya server. sebuah Worker adalah sebuah kecil script Anda dapat jalankan di itu poin di path. ini sees permintaan coming di dan respons going out, dan ini dapat perubahan either satu. Evidence for this claim Cloudflare Workers run code on Cloudflare's network and can inspect or modify requests and responses. Scope: Cloudflare Workers request handling. Confidence: high · Verified: Cloudflare Workers: How Workers works
itu’s seluruh appeal untuk SEO: Anda mendapatkan untuk perbaiki hal pada halaman Anda dapat’t jika tidak edit. Stuck pada sebuah locked-down platform? Menunggu weeks untuk sebuah developer untuk tambahkan sebuah canonical tag? sebuah Worker dapat melakukan ini di minutes, langsung, tanpa sebuah deploy untuk situs itself.
Apa orang gunakan Workers untuk di SEO
- Redirects — kirim old URLs untuk baru ones di edge, bahkan thousands dari them.
- Memperbaiki atau menambahkan tags — inject sebuah tag canonical, correct sebuah judul, tambahkan hreflang, drop di data terstruktur — semua tanpa editing halaman’s sumber.
- Rewriting headers — tambahkan atau perbaiki hal like
X-Robots-Tag.
aturan Anda cannot break
Whatever Anda Worker melakukan, ini memiliki untuk melakukan ini untuk everyone. jika Anda tampilkan Googlebot sebuah berbeda halaman daripada sebuah nyata person sees — untuk game rankings — itu’s cloaking, dan ini adalah terhadap Google’s aturan. Evidence for this claim Google defines serving materially different content to search engines and users to manipulate rankings as cloaking and a spam-policy violation. Scope: Google Search spam policy; legitimate personalization is context-dependent. Confidence: high · Verified: Google: Spam policies — cloaking safe pattern adalah sederhana: apply yang sama logic untuk setiap permintaan, Tidak penting siapa’s asking. ( Edge SEO hub covers ini aturan secara mendalam — ini halaman assumes Anda sudah mendapatkan concept dan ingin Cloudflare-spesifik bagaimana-untuk.)
dua cara untuk hurt yourself
sebagian besar “Cloudflare hurt my SEO” (terjemahan) “Cloudflare hurt my SEO” stories tidak Worker code di semua:
- sebuah bot-blocking setting. Cloudflare’s bot Fight Mode dapat accidentally block atau challenge Googlebot. jika Google dapat’t fetch Anda halaman, tidak ada apa pun else penting.
- Caching confusion. Cloudflare memiliki lebih daripada satu jenis dari cache, dan jika Anda tidak know yang satu Anda’re touching, sebuah perubahan Anda shipped dapat seem untuk “tidak menunjukkan up.” (terjemahan) “tidak tampilkan up.”
ingin sebenarnya code — sebuah fetch handler, sebuah HTMLRewriter contoh, sebuah KV redirect
table — plus caching dan bot-blocking detail? Switch untuk Advanced tab.
TL;DR — sebuah Cloudflare Worker hanya sees permintaan cocok oleh -nya configured route, dan ini intercepts setiap satu di sebuah single
fetchhandler, di mana Anda melakukan three hal di sequence: rewrite permintaan, rewrite respons headers, dan rewrite respons body melaluiHTMLRewriter. itu’s nyata mechanism behind “inject a canonical” (terjemahan) “inject sebuah canonical” atau “perbaiki a title” (terjemahan) “perbaiki sebuah judul” — dan ini perlu untuk menjadi idempotent, tested terhadap missing, duplicate, dan non-HTML respons, tidak hanya happy path. Redirects di scale langsung di KV (fast key lookup) atau D1 (relational); Bulk Redirects/aturan cover kecil sets lebih sekadar, dan I umumnya prefer edge-tingkat redirects di atas server-tingkat — tetapi pick satu owner per URL, since sebuah Worker redirect, sebuah Bulk Redirect, dan sebuah origin redirect dapat semua fire pada yang sama path. Three berbeda hal share kata “cache” (terjemahan) “cache” — Workers Cache API (caches.default), Cloudflare edge cache, dan originCache-Control— dan confusing them adalah biasa penyebab dari “my tag tidak menunjukkan up” (terjemahan) “my tag tidak tampilkan up”; diagnose staleness oleh cache key, layer, TTL, dan invalidation alih-alih guessing. Google’s own ETag / jika-None-Match / 304 guidance adalah secara langsung actionable untuk sebuah Worker itu owns respons. cloaking line: identical logic untuk setiap requester. paling Workers-spesifik self-inflicted wound adalah bot Fight Mode, yang berjalan di luar WAF Ruleset mesin, so ordinary “izinkan” (terjemahan) “izinkan” aturan jangan reach ini. Ship setiap SEO-affecting perubahan dengan recorded versi metadata, sebuah tested rollback, dan sebuah berhenti condition — lalu verify dengan GSC pemeriksaan URL danCF-Cache-Status.
Apa ini artikel adalah (dan tidak)
ini adalah practitioner, code-tingkat companion untuk Edge SEO
hub. hub owns umum definition, platform perbandingan table (Workers,
Akamai, Fastly, Lambda@Edge, Vercel, Netlify), Snippets-vs-Workers decision, dan
penuh treatment dari cloaking aturan. I’m tidak re-deriving apa pun dari itu di sini. ini halaman
goes satu tingkat deeper ke Cloudflare Workers secara khusus — runtime ini very situs’s
own worker berjalan pada, wired di melalui run_worker_first di wrangler.toml — dengan nyata
APIs alih-alih “edge compute dapat inject tags” (terjemahan) “edge compute dapat inject tags” hand-waving.
sebuah note sebelum code: Google memiliki Tidak Cloudflare-Workers-spesifik documentation. official guidance itu governs ini (cloaking policy, HTTP caching, CDN crawling) adalah umum dan applies untuk apa pun edge implementation. I’d rather say itu plainly daripada imply sebuah Google doc ada itu tidak.
Bagaimana sebuah Worker sits di permintaan/respons path
sebuah Worker adalah sebuah serverless script berjalan pada V8 isolates. setiap permintaan ini adalah routed untuk
enters melalui sebuah fetch handler. Evidence for this claim A Cloudflare Worker receives HTTP requests through a fetch handler. Scope: Cloudflare Workers handlers. Confidence: high · Verified: Cloudflare Workers: Fetch handler “Routed untuk” (terjemahan) “Routed untuk” adalah melakukan nyata berfungsi di itu kalimat: sebuah
Worker hanya sees permintaan itu match -nya configured
route atau custom domain —
semuanya else tidak pernah reaches fetch handler di semua. Di mana dua routes dapat keduanya match
yang sama URL, lebih spesifik pattern takes precedence, so sebelum Anda trust sebuah Worker’s
perilaku untuk sebuah diberikan URL, konfirmasi route sebenarnya matches ini dan periksa yang deployed
versi adalah langsung pada itu route (Wrangler environments dan gradual rollouts berarti versi
serving traffic tidak selalu satu di Anda editor). Di dalam handler Anda dapat melakukan three
distinct hal, di order:
- Rewrite permintaan sebelum ini goes untuk Anda origin.
- Rewrite respons headers pada cara back out.
- Rewrite respons body — melalui
HTMLRewriter.
Di sini’s minimal shape:
export default {
async fetch(request, env, ctx) {
// 1. (optionally) inspect/modify the request
const response = await fetch(request); // hit the origin
// 2. rewrite headers
const headers = new Headers(response.headers);
headers.set("X-Robots-Tag", "index, follow");
// 3. rewrite the body with HTMLRewriter (see next section)
return new Response(response.body, { ...response, headers });
},
};SALT.agency team, siapa coined “edge SEO” (terjemahan) “edge SEO” off Cloudflare Workers research, dibangun mereka tooling sebagai sebuah filter chain — sebuah permintaan filter, sebuah respons filter, dan sebuah body filter. itu’s yang sama three-phase pattern; mereka hanya named ini. Mempertahankan itu three phases terpisah di Anda head mempertahankan sebuah Worker legible.
Rewriting HTML dengan HTMLRewriter
HTMLRewriter adalah Cloudflare’s streaming HTML parser, dan ini adalah sebenarnya API behind setiap
“inject a tag” (terjemahan) “inject sebuah tag” trick. Evidence for this claim Cloudflare HTMLRewriter provides selector-based handlers that can transform streamed HTML elements. Scope: Cloudflare Workers HTMLRewriter API. Confidence: high · Verified: Cloudflare Workers: HTMLRewriter Anda register .on(selector, handler) element
handlers, dan handler mendapatkan getAttribute / setAttribute, prepend / append,
setInnerContent, dan replace. Karena ini streams, Anda’re tidak buffering seluruh
document di memory.
Injecting atau memperbaiki sebuah tag canonical
class CanonicalHandler {
constructor(url) { this.url = url; }
element(el) { el.setAttribute("href", this.url); }
}
const rewriter = new HTMLRewriter()
.on('link[rel="canonical"]', new CanonicalHandler("https://example.com/preferred/"));
return rewriter.transform(response);jika halaman memiliki Tidak canonical di semua, Anda attach sebuah handler untuk head dan append satu
alih-alih editing sebuah existing tag. Either cara, remember lesson dari
canonicalization side dari ini:
rel=canonical adalah sebuah hint, tidak sebuah command — sebuah Worker lets Anda set ini consistently di seluruh sebuah
seluruh platform, tetapi Google masih decides.
CanonicalHandler di atas assumes sebuah tag sudah ada dan respons adalah HTML. Neither
adalah guaranteed di production, dan getting ini wrong adalah bagaimana Anda end up dengan dua tag canonical
pada satu halaman alih-alih satu. sebelum Anda ship sebuah rewrite like ini, membuat ini idempotent dan test
ini terhadap:
- Tidak existing canonical — Anda handler perlu untuk detect missing case dan
appendsatu untukhead, tidak silently Tidak-op padalink[rel="canonical"]matching tidak ada apa pun. - sebuah duplicate atau malformed canonical sudah present — decide apakah Anda hapus stray tag atau leave Anda rewrite untuk tambahkan sebuah kedua satu ( latter adalah sebuah nyata bug, tidak sebuah edge case — duplicate canonicals adalah sebuah umum self-inflicted issue).
- sebuah non-HTML respons — sebuah API route, sebuah image, atau sebuah redirect respons lulus melalui
sama Worker tidak seharusnya menjadi jalankan melalui
HTMLRewriterdi semua; cakupan transform untuk routes dan konten jenis Anda’ve sebenarnya diperiksa. - Berjalan transform twice pada yang sama respons (sebuah retry, sebuah nested
fetch) — konfirmasi ini tidak re-append sebuah kedua tag.
menambahkan atau correcting hreflang alternates
sama mechanism, driven off config. Anda append satu link[rel="alternate"] per locale untuk
head. jika Anda alternates adalah per-locale dan relational, itu config belongs di D1; jika ini adalah
sebuah flat lookup, KV adalah fine. poin adalah itu HTMLRewriter injects them identically untuk setiap
requester — Anda’re tidak branching pada pengguna agent.
Injecting JSON-LD data terstruktur
new HTMLRewriter().on("head", {
element(head) {
head.append(
`<script type="application/ld+json">${JSON.stringify(schema)}</script>`,
{ html: true }
);
},
});CPU limits itu bite di scale
Satu pesaing claim I’d push back pada adalah “sub-millisecond, Tidak constraints.” (terjemahan) “sub-millisecond, Tidak constraints.” nyata ceiling
adalah CPU time: 10 ms pada free plan, 30 ms pada paid (wall-clock time menunggu pada fetch
tidak count — CPU time melakukan). untuk typical rewrites Anda’ll tidak pernah notice. untuk berat
HTMLRewriter melewati di atas very besar halaman, ini adalah sebuah nyata constraint untuk design sekitar, tidak
scaremongering.
Redirects di edge: KV vs D1 vs aturan
I typically prefer untuk memiliki redirects pada edge (CDN tingkat) di atas memiliki them pada server — ini offloads berfungsi dari Anda origin dan applies sebelum halaman adalah ever generated. pada Cloudflare secara khusus, di my Ahrefs guide untuk redirects untuk SEO I laid out itu Anda’ve mendapat several options: single atau bulk redirects, redirect aturan, halaman aturan, atau Workers dengan key-nilai pairs — atau sebuah Worker itu modifies headers untuk tambahkan sebuah redirect.
untuk sebuah Worker-driven table, KV adalah natural home: sebuah fast, eventually-consistent key lookup keyed oleh URL.
export default {
async fetch(request, env) {
const url = new URL(request.url);
const target = await env.REDIRECTS.get(url.pathname); // KV namespace
if (target) return Response.redirect(target, 301);
return fetch(request);
},
};Reach untuk D1 ketika redirects adalah relational (per-locale, per-segment SQL Anda ingin kueri). dan know ketika sebuah Worker adalah overkill: untuk sebuah kecil, static set dari redirects, Cloudflare’s Bulk Redirects atau Redirect aturan adalah simpler dan perlu Tidak code di semua. jangan hand-roll sebuah KV Worker untuk fifty redirects.
Pick satu owner untuk sebuah diberikan URL dan jangan let sebuah Worker redirect, sebuah Bulk Redirect, sebuah Redirect aturan, dan sebuah origin redirect semua apply untuk yang sama path — mereka’re terpisah sistem itu dapat setiap fire pada yang sama permintaan, dan ketika lebih daripada satu matches, Anda’re debugging precedence alih-alih sebuah bersih redirect. sebelum Anda tambahkan sebuah redirect anywhere, periksa apakah satu sudah ada untuk itu path di lainnya sistem, dan pick layer berdasarkan match complexity (sederhana 1:1 vs. pattern-based), scale, dan siapa perlu untuk observe atau roll ini back — sebuah Worker redirect lives di Anda code dan logs; sebuah Bulk Redirect atau aturan lives di dashboard dan adalah easier untuk sebuah non-developer untuk audit atau revert.
Caching: three berbeda hal, satu confusing name
ini adalah bagian pesaing halaman skip, dan ini adalah satu itu generates paling “why didn’t my change show up” (terjemahan) “mengapa tidak my perubahan tampilkan up” confusion. Three terpisah layers share kata cache:
- ** Workers Cache API** —
caches.defaultdancaches.open(). ini adalah sebuah Worker-scoped programmable cache Anda baca dan tulis di code. - ** Cloudflare edge cache** — CDN cache itu menyajikan Anda assets. Distinct dari Cache API.
- Origin
Cache-Control— headers Anda origin (atau Anda Worker) sets, yang influence keduanya dari di atas dan apa Googlebot melakukan.
Conflate them dan Anda’ll swear sebuah perubahan tidak deploy ketika ini adalah hanya menjadi disajikan dari sebuah layer Anda tidak purge.
Ketika sebuah perubahan genuinely tidak menunjukkan up, jangan guess — diagnose ini layer oleh layer:
- Cache key. Apa permintaan attributes determine apakah dua permintaan hit yang sama cached entry (URL, dan sometimes headers atau cookies jika Anda cache key mencakup them)? sebuah rewrite itu varies oleh sesuatu tidak di cache key dapat sajikan wrong variant.
- Yang layer disajikan respons. periksa
CF-Cache-Status(HIT/MISS/EXPIRED/DYNAMIC) untuk see apakah edge cache answered di semua, atau permintaan reached Anda Worker. - Location/state. Cloudflare’s cache adalah distributed di seluruh data centers — sebuah purge atau sebuah fresh deploy tidak niscaya invalidate setiap edge location instantly.
- TTL dan aturan itu set ini. Konfirmasi apakah sebuah cache aturan, sebuah
Cache-Controlheader dari Anda origin, atau sebuah header Anda Worker itself set adalah controlling TTL. - Invalidation. melakukan Anda purge spesifik URL, purge semuanya, atau rely pada TTL expiry?
sebuah Worker-owned Cache API entry (
caches.default) perlu -nya own jelasdelete()— purging CDN cache tidak touch ini.
Apa Googlebot melakukan dengan ETag / jika-None-Match / 304
jika Anda Worker generates atau rewrites respons, ini owns caching headers — yang berarti
Google’s December 2024 HTTP caching guidance adalah secara langsung actionable untuk Anda. Google mendukung
heuristic HTTP caching melalui ETag/If-None-Match dan Last-Modified/If-Modified-Since,
strongly recommends ETag
karena ini adalah lebih sedikit error-prone, dan says itu ketika crawler’s ETag matches, Anda server
seharusnya mengembalikan 304 tidak diubah dengan Tidak body. sebuah respons-generating Worker dapat implement
persis itu: compute sebuah ETag, bandingkan ini terhadap If-None-Match, dan pendek-circuit untuk sebuah 304
itself — saving compute dan giving Googlebot sebuah fast, cacheable sinyal.
max-age recrawl tradeoff
Google juga says untuk pertimbangkan setting Cache-Control: max-age untuk help crawler decide ketika untuk
recrawl. catch untuk sebuah Worker itu rewrites HTML: sebuah aggressive max-age pada sebuah halaman milik siapa
Worker-injected tags hanya changed dapat delay Googlebot dari seeing perbarui Anda hanya shipped.
jangan slap sebuah panjang cache lifetime pada rewritten HTML dan forget tentang ini.
cloaking boundary, applied untuk Workers
hard aturan, di Workers istilah: jalankan yang sama logic untuk setiap requester. Google’s spam policy defines cloaking sebagai presenting berbeda konten untuk pengguna dan mesin pencari untuk manipulate rankings, dan secara khusus panggilan out inserting text atau keywords hanya ketika requester adalah sebuah mesin pencari.
sebuah couple dari clarifications, karena orang di atas-correct di sini:
- Inspecting pengguna-Agent tidak secara otomatis cloaking. Logging bot traffic, atau serving sebuah cached respons lebih cepat untuk apa pun client, adalah fine. line adalah sebuah konten perbedaan oleh requester identity, selesai untuk manipulate rankings.
- halaman-split sebuah/B testing pada Workers adalah fine. Splitting pengguna oleh URL dan treating setiap requester yang sama adalah legitimate. Splitting oleh siapa’s asking — bot vs. human — adalah tidak.
sebuah worked contoh dari safe pattern: ini situs’s own preview gate adalah sebuah Worker itu 404s apa pun
/preview/ path unless sebuah cookie matches sebuah secret. ini mengembalikan itu 404 untuk everyone tanpa
cookie — Googlebot disertakan. itu’s precisely safe shape: ini tidak hiding satu hal dari
bot dan menunjukkan lainnya untuk pengguna; ini applies satu aturan uniformly.
dan jangan lean pada sebuah bot-hanya pre-render langkah bahkan jika Anda bangun ini cleanly pada Workers. Google telah menyebut dynamic rendering sebagai “Dynamic rendering was a workaround and not a long-term solution” (terjemahan) “Perenderan dinamis adalah solusi sementara, bukan solusi jangka panjang” (panduan dynamic rendering); sebuah Worker itu pre-renders hanya untuk bot inherits itu deprecation.
Bagaimana sebuah Worker dapat accidentally block atau slow Googlebot
ini adalah paling Workers-spesifik cara untuk shoot yourself di foot, dan ini adalah biasanya tidak di Anda Worker code.
bot Fight Mode berjalan di luar Ruleset mesin
bot Fight Mode (dan Super bot Fight Mode) dapat produce salah positives terhadap legitimate crawler, Googlebot disertakan. trap: bot Fight Mode adalah evaluated pada sebuah terpisah pipeline dari WAF Ruleset mesin, so Anda ordinary WAF “izinkan” (terjemahan) “izinkan” atau “skip” (terjemahan) “skip” custom aturan jangan override ini. jika bot Fight Mode adalah challenging Googlebot, Anda tidak perbaiki ini dengan sebuah izinkan-aturan — Anda memiliki untuk perubahan atau disable mode itself. (Konfirmasi saat ini mechanics terhadap Cloudflare’s bot Fight Mode dan Super bot Fight Mode docs sebelum Anda rely pada ini — bot products perubahan.)
verified-bot custom aturan pattern
Cloudflare exposes sebuah cf.client.bot field dan sebuah
verified-bot izinkan pattern
so Anda dapat permit known-baik crawler di Anda custom aturan — berguna untuk WAF side, though (per
di atas) ini melakukan tidak reach bot Fight Mode.
CDN itself adalah neutral-untuk-positive
untuk menjadi jelas tentang myth: Cloudflare—CDN tidak hurt SEO. Google’s own 2024
crawling December
berfungsi notes itu Google increases laju crawling ketika ini detects sebuah CDN — tetapi itu sebuah CDN dapat juga
accidentally block Googlebot melalui WAF/bot aturan, dan itu sebuah 503 adalah better daripada sebuah bot-verification
interstitial. risk adalah sebuah misconfigured Worker atau bot setting, tidak infrastructure.
Verifying apa Googlebot sebenarnya diterima
setelah apa pun Worker deploy, konfirmasi apa sebuah crawler sebenarnya mendapat — jangan assume:
- GSC pemeriksaan URL → Test Langsung URL. Fetches halaman sebagai Google dan menampilkan dirender HTML, so Anda dapat konfirmasi Anda injected canonical/hreflang/JSON-LD adalah sebenarnya present.
- periksa
CF-Cache-Statusalongside HTML.HIT/MISS/EXPIREDtells Anda apakah Anda’re looking di sebuah fresh Worker respons atau sebuah cached satu — fastest cara untuk catch sebuah “change didn’t show up” (terjemahan) “perubahan tidak tampilkan up” itu’s benar-benar sebuah cache-layer issue. - Fetch sebagai Googlebot secara langsung. permintaan dengan Googlebot’s pengguna agent dan bandingkan — tetapi remember matching string proves tidak ada apa pun tentang identity; verify nyata Googlebot dengan reverse + forward DNS terhadap Google’s published ranges (see Scripts tab).
Deployment hygiene spesifik untuk Workers
sebuah successful wrangler deploy tells Anda script shipped — ini tidak tell Anda Googlebot adalah
getting right dirender output. Treat setiap SEO-affecting Worker perubahan sebagai sebuah rilis dengan sebuah
record, tidak hanya sebuah push:
- Cakupan Anda routes. jangan jalankan sebuah Worker pada
/*oleh default. Match ini untuk paths ini perlu di Andawrangler.tomlroute patterns so sebuah bug dapat’t take down Anda seluruh situs. - periksa saat ini limits sebelum Anda promise scale. CPU time, subrequest counts, dan script size limits vary oleh plan dan perubahan di atas time — konfirmasi terhadap Cloudflare’s saat ini limits halaman sebelum Anda design sebuah rewrite sekitar sebuah spesifik ceiling, alih-alih relying pada sebuah remembered angka.
- Record versi metadata untuk rilis. Cloudflare’s versi dan deployments model tracks sumber versi, compatibility date, bindings, dan routes untuk setiap deploy — note yang versi adalah langsung pada yang route so sebuah “the Worker is doing X” (terjemahan) “ Worker adalah melakukan X” claim adalah checkable terhadap apa sebenarnya deployed, tidak apa di Anda editor.
- versi dan roll back dengan Wrangler environments. Ship untuk sebuah staging environment, secara bertahap roll out oleh percentage, dan pertahankan ability untuk revert untuk prior versi instantly.
- gunakan scoped logs untuk monitor rollout — dengan mereka limits di mind. Cloudflare’s Workers Logs dan log tailing dapat mendukung debugging sebuah gradual rollout, tetapi logs adalah sampled dan retained untuk sebuah limited window — treat them sebagai scoped evidence untuk permintaan mereka captured, tidak sebuah menyelesaikan record dari setiap crawler visit.
- Set sebuah berhenti condition dan test rollback sebelum Anda perlu ini. Decide up front apa observed perilaku (error rate, sebuah wrong respons pada sebuah spot-periksa, sebuah crawl-rate drop) halts rollout, dan konfirmasi rollback path sebenarnya berfungsi alih-alih assuming ini akan.
- Purge cache sebagai bagian dari deploy. Since three cache layers adalah di play, membuat cache purge/invalidation sebuah jelas langkah dari shipping sebuah rewrite, tidak sebuah afterthought.
sebuah Bing note, dan satu forward-looking hal
Bing memiliki Tidak Cloudflare/edge-spesifik guidance either. tetapi karena sebuah Worker deploy adalah instant sementara melakukan crawl tidak, IndexNow adalah natural pairing — fire ini moment sebuah Worker-driven redirect table atau tag perubahan ships so Bing (dan lainnya participating mesin) re-crawl promptly. dan worth sebuah glance: Cloudflare shipped edge-enforced canonicalization sebagai sebuah product fitur (“Redirects for AI Training” (terjemahan) “Redirects untuk AI Training”) — verified AI-training crawler mendapatkan sebuah 301 untuk Anda canonical URL dengan satu toggle. ini adalah sebuah berguna contrast untuk hand-rolling canonical logic di Anda own Worker, dan sebuah reminder itu “serving crawlers something different from users” (terjemahan) “serving crawler sesuatu berbeda dari pengguna” adalah sebuah pattern Microsoft memiliki publicly telah skeptical dari pada Cloudflare’s lainnya AI-crawler fitur — sebuah baik gut periksa pada apa pun bot-conditional Worker.
untuk lebih luas picture — platform perbandingan, Snippets vs. Workers, dev-queue dan governance angles — head back untuk Edge SEO hub.
AI summary
sebuah condensed take pada Advanced versi:
- Cloudflare Workers SEO = melakukan SEO teknis pada Cloudflare’s V8-isolate runtime. ini adalah code-tingkat, Workers-spesifik implementation dari umum Edge SEO concept — see itu hub untuk definition, platform perbandingan, dan cloaking depth.
- sebuah Worker hanya sees apa -nya route matches. Route/domain configuration dan precedence decide
yang permintaan reach
fetchhandler di semua — konfirmasi route dan deployed versi sebelum trusting sebuah Worker’s perilaku untuk sebuah URL. - Satu
fetchhandler, three phases: rewrite permintaan, rewrite respons headers, rewrite respons body. Body rewriting berjalan melaluiHTMLRewriter— nyata mechanism untuk injecting sebuah canonical, memperbaiki hreflang, atau menambahkan JSON-LD. membuat rewrite idempotent dan test ini terhadap missing, duplicate, malformed, dan non-HTML respons, tidak hanya happy path. - Redirects: KV untuk fast key lookups, D1 untuk relational config, Bulk Redirects/aturan untuk kecil static sets. Patrick prefers edge-tingkat redirects di atas server-tingkat — tetapi pick satu owner per URL; sebuah Worker redirect, Bulk Redirect, Redirect aturan, dan origin redirect dapat semua fire pada yang sama path.
- Three caches share satu kata: Workers Cache API (
caches.default), Cloudflare edge cache, dan originCache-Control— conflating them penyebab “my ubah tidak menunjukkan up.” (terjemahan) “my perubahan tidak tampilkan up.” Diagnose ini oleh cache key, layer, TTL, dan invalidation alih-alih guessing. - Google’s ETag/jika-None-Match/304 caching guidance (Dec 2024) adalah secara langsung actionable: sebuah
respons-owning Worker dapat pendek-circuit untuk sebuah 304 itself; tetapi sebuah aggressive
max-agedapat delay recrawl dari sebuah hanya-changed halaman. - Cloaking aturan: identical logic untuk setiap requester. Inspecting UA tidak secara otomatis cloaking; sebuah konten perbedaan oleh requester identity untuk manipulate rankings adalah.
- Biggest self-inflicted risk: bot Fight Mode berjalan di luar WAF Ruleset mesin, so wajar izinkan-aturan jangan reach ini — Anda harus perubahan mode itself.
- Ship dengan sengaja: periksa saat ini plan limits sebelum promising scale, record versi metadata (compatibility date, bindings, routes) per rilis, gunakan scoped logs (sampled, tidak sebuah menyelesaikan record) untuk watch sebuah rollout, dan set sebuah berhenti condition dengan sebuah tested rollback sebelum Anda perlu ini.
- Verify dengan GSC pemeriksaan URL (Test Langsung URL) dan
CF-Cache-Statusheader; watch CPU limits (10 ms free / 30 ms paid) pada berat rewrites.
Dokumentasi resmi
ada Tidak Cloudflare-Workers-spesifik SEO doc dari Google atau Bing — governing guidance adalah umum. paling berguna utama sources adalah split antara mesin pencari (policy/caching) dan Cloudflare ( runtime APIs).
Google (applies untuk apa pun edge implementation)
- Spam policies — cloaking — hard boundary apa pun Worker logic harus respect.
- crawling December: HTTP caching (2024) — ETag / jika-None-Match / 304 / max-age, secara langsung actionable untuk sebuah respons-owning Worker.
- crawling December: CDNs dan crawling (2024) — bagaimana sebuah CDN memengaruhi laju crawling dan bagaimana bot aturan dapat block Googlebot.
- Dynamic rendering (deprecated) — mengapa sebuah bot-hanya pre-render Worker inherits sebuah deprecated pattern.
- Overview dari Google crawler dan fetchers — pengguna agents dan published IP ranges untuk verification.
Cloudflare ( runtime)
- HTMLRewriter — streaming HTML parser API.
- Cache API —
caches.default/caches.open(). - Bagaimana cache berfungsi — Cache API vs. edge cache.
- Routes dan domains — route matching, precedence, dan yang permintaan sebenarnya invoke sebuah Worker.
- Bulk Redirects — Tidak-code redirect sistem sebuah Worker redirect dapat conflict atau overlap dengan.
- Workers limits — saat ini CPU, subrequest, dan script-size ceilings; plan- dan date-sensitive, so periksa ini secara langsung alih-alih trusting sebuah remembered angka.
- versi dan deployments — versioned/gradual deploys dan rollback.
- Workers Logs — invocation logs, tailing, dan mereka sampling/retention limits.
- bot Fight Mode / Super bot Fight Mode — bot settings itu dapat block Googlebot.
- Izinkan traffic dari verified bot —
cf.client.botcustom-aturan pattern.
Bing — Tidak edge/Workers halaman ada; IndexNow adalah relevant pairing untuk instant post-deploy re-crawl.
Quotes dari sumber
pada—record statements. setiap Google tautan adalah sebuah deep tautan itu jumps untuk quoted passage.
Google — cloaking boundary
- “Cloaking refers to the practice of presenting different content to users and search engines with the intent to manipulate search rankings and mislead users.” (terjemahan) “Cloaking refers untuk practice dari presenting berbeda konten untuk pengguna dan mesin pencari dengan intent untuk manipulate penelusuran rankings dan mislead pengguna.” — Google Search Central, Spam policies untuk Google web penelusuran. Jump untuk quote
- “Inserting text or keywords into a page only when the user agent that is requesting the page is a search engine, not a human visitor” (terjemahan) “Inserting text atau keywords ke sebuah halaman hanya ketika pengguna agent itu adalah requesting halaman adalah sebuah mesin pencari, tidak sebuah human pengunjung” — listed sebagai sebuah contoh dari cloaking. Jump untuk quote
Google — HTTP caching (crawling December, 2024)
- “Google’s crawling infrastructure supports heuristic HTTP caching as defined by the HTTP caching standard, specifically through the ETag response- and If-None-Match request header, and the Last-Modified response- and If-Modified-Since request header.” (terjemahan) “Infrastruktur crawling Google mendukung caching HTTP heuristik sebagaimana ditetapkan standar caching HTTP, khususnya melalui header respons ETag dan permintaan If-None-Match, serta header respons Last-Modified dan permintaan If-Modified-Since.” Jump untuk quote
- “We strongly recommend using ETag because it’s less prone to errors and mistakes (the value is not structured unlike the Last-Modified value).” (terjemahan) “kami strongly merekomendasikan menggunakan ETag karena ini adalah lebih sedikit prone untuk errors dan mistakes ( nilai adalah tidak structured unlike Terakhir-Modified nilai).” Jump untuk quote
- “If the ETag value sent by the crawler matches the current value the server generated, your server should return an HTTP 304 (Not modified) status code with no HTTP body.” (terjemahan) “Jika nilai ETag yang dikirim crawler cocok dengan nilai saat ini yang dibuat server, server Anda harus mengembalikan kode status HTTP 304 (Tidak diubah) tanpa body HTTP.” Jump untuk quote
- “While not required, consider also setting the max-age field of the Cache-Control header to help crawlers determine when to recrawl the specific URL.” (terjemahan) “Meskipun tidak wajib, pertimbangkan juga menetapkan field max-age pada header Cache-Control agar crawler dapat menentukan kapan harus merayapi ulang URL tertentu.” Jump untuk quote
Google — dynamic rendering (deprecated)
- “Dynamic rendering was a workaround and not a long-term solution for problems with JavaScript-generated content in search engines.” (terjemahan) “Perenderan dinamis adalah solusi sementara, bukan solusi jangka panjang untuk masalah konten yang dibuat JavaScript di mesin pencari.” Jump untuk quote
Me — pada edge-tingkat redirects
- “I typically prefer untuk memiliki redirects pada itu edge (CDN-level) over memiliki them pada itu server.” (terjemahan) “I typically prefer untuk memiliki redirects pada edge (CDN-tingkat) di atas memiliki them pada server.” — dari my Ahrefs guide, 11 jenis dari Redirects & mereka SEO Impact. Relayed dari my own published artikel; wording adalah mine tetapi konfirmasi tepat phrasing terhadap langsung halaman sebelum treating ini sebagai sebuah hard quote.
Cloudflare / SALT.agency — mengapa Workers untuk redirects
- “we needed to implement simple redirects, which should be easy to create on the majority of platforms but wasn’t supported” (terjemahan) “kami needed untuk implement sederhana redirects, yang seharusnya menjadi easy untuk buat pada majority dari platforms tetapi tidak didukung” — Igor Krestov & Dan Taylor, Diving ke SEO teknis menggunakan Cloudflare Workers (Cloudflare blog). Relayed melalui summarization dari Cloudflare blog post, tidak confirmed sebagai sebuah tepat substring — re-verify terhadap langsung halaman sebelum menggunakan sebagai sebuah hard blockquote.
Yang alat untuk job?
“I need to add redirects.” (terjemahan) “I perlu untuk tambahkan redirects.”
- sebuah kecil, static set (sebuah sedikit dozen, Tidak logic)? → Cloudflare Bulk Redirects atau Redirect aturan. Tidak Worker, Tidak code.
- Thousands dari URL-keyed redirects? → sebuah Worker + KV lookup.
- Relational (per-locale, per-segment, queried) redirects? → sebuah Worker + D1.
- perlu untuk redirect dan rewrite headers di yang sama lulus? → sebuah Worker (aturan dapat’t melakukan keduanya).
“I perlu untuk inject atau perbaiki a tag (canonical, hreflang, title, JSON-LD).” (terjemahan) “I perlu untuk inject atau perbaiki sebuah tag (canonical, hreflang, judul, JSON-LD).”
- → sebuah Worker dengan
HTMLRewriter. ada Tidak Tidak-code Cloudflare product untuk arbitrary body rewriting; ini adalah Workers’ job.
“Googlebot’s crawl dropped setelah I added Cloudflare.” (terjemahan) “Googlebot’s crawl dropped setelah I ditambahkan Cloudflare.”
- pertama suspect bot Fight Mode / Super bot Fight Mode, tidak Anda Worker. periksa apakah ini adalah challenging Googlebot — dan remember sebuah WAF izinkan-aturan tidak akan perbaiki ini; Anda perubahan mode itself.
- lalu periksa WAF custom aturan dan apakah sebuah
503/interstitial adalah menjadi disajikan untuk bot. - hanya lalu audit Worker code dan route cakupan.
“My injected tag isn’t showing up.” (terjemahan) “My injected tag tidak menunjukkan up.”
- periksa
CF-Cache-Status.HIT/EXPIRED? Anda’re seeing sebuah cached respons — purge right layer (Workers Cache API vs. edge cache) dan re-test. MISSdan masih wrong? Now ini adalah Anda Worker logic atau route cakupan. Konfirmasi dengan GSC pemeriksaan URL.
“Should I pre-render only for bots on a Worker?” (terjemahan) “seharusnya I pre-render hanya untuk bot pada sebuah Worker?”
- → Tidak. itu’s dynamic rendering, yang Google memiliki deprecated. Prefer SSR/static rendering applied untuk everyone.
Cloudflare Workers SEO checklist
sebelum Anda ship sebuah rewrite Worker
- Route adalah scoped untuk paths ini perlu di
wrangler.toml— tidak/*oleh reflex — dan Anda’ve confirmed yang deployed versi adalah sebenarnya langsung pada itu route. - Worker applies identical logic untuk setiap requester (Tidak bot-vs-human konten branch).
-
HTMLRewriterhandlers adalah idempotent dan tested terhadap sebuah missing tag, sebuah duplicate/malformed existing tag, dan sebuah non-HTML respons — tidak hanya happy path. - untuk redirects, Anda’ve picked right alat: Bulk Redirects/aturan (kecil/static), KV (URL-keyed di scale), atau D1 (relational) — dan confirmed Tidak lainnya redirect sistem sudah owns itu URL.
- saat ini plan limits (CPU, subrequests, script size) adalah diperiksa secara langsung, tidak remembered.
-
Cache-Controlpada rewritten HTML tidak so aggressive ini delays recrawl dari changed halaman. - versi metadata (compatibility date, bindings, routes) adalah recorded untuk rilis, dengan sebuah tested rollback path dan sebuah didefinisikan berhenti condition untuk rollout.
Caching sanity
- Anda know yang dari three layers (Workers Cache API / edge cache / origin
Cache-Control) Anda’re touching. - jika Worker owns respons, ini sets sebuah correct
ETagdan dapat pendek-circuit untuk304. - Cache purge/invalidation adalah sebuah jelas langkah di deploy.
bot access
- bot Fight Mode / Super bot Fight Mode tidak challenging Googlebot (diperiksa secara langsung — sebuah WAF izinkan-aturan melakukan tidak override ini).
- Verified-bot custom aturan (
cf.client.bot) adalah di place jika Anda gate pada WAF side. - bot mendapatkan sebuah
503, tidak sebuah verification interstitial, ketika Anda perlu slow them.
Verify setelah deploy
- GSC pemeriksaan URL → Test Langsung URL mengonfirmasi injected tag adalah di dirender HTML.
-
CF-Cache-Statusdiperiksa (HIT/MISS/EXPIRED) so Anda know jika Anda’re seeing sebuah cached copy. - IndexNow fired (Bing/others) jika sebuah redirect table atau tag perubahan hanya shipped.
- Versioned melalui Wrangler environments dengan sebuah tested rollback path.
mental models
1. Satu handler, three phases.
setiap Worker adalah sebuah fetch handler, dan semuanya Anda melakukan lives di satu dari three phases di order:
rewrite permintaan → rewrite respons headers → rewrite respons body
(HTMLRewriter). Locate apa Anda’re mengubah di itu sequence sebelum Anda tulis sebuah line.
2. “Cache” (terjemahan) “Cache” adalah three hal, tidak satu.
Workers Cache API (caches.default) ≠ Cloudflare edge cache ≠ origin Cache-Control. Ketika sebuah perubahan
“tidak menunjukkan up,” (terjemahan) “tidak tampilkan up,” tanyakan yang layer Anda’re sebenarnya looking di sebelum Anda touch code.
3. cloaking test: identity vs. logic. Branching pada siapa’s asking untuk perubahan konten = cloaking. Applying sama logic untuk everyone — bahkan jika itu logic inspects UA untuk logging atau speed — adalah fine. tanyakan: “akan a real user mendapatkan persis apa Googlebot mendapat?” (terjemahan) “akan sebuah nyata pengguna mendapatkan persis apa Googlebot mendapat?”
4. blame order untuk sebuah crawl drop. bot Fight Mode → WAF aturan → Worker code → route cakupan. bot settings jalankan pada sebuah pipeline Anda izinkan aturan jangan reach, so suspect them pertama.
5. Worker owns respons — so ini owns caching semantics.
jika Anda Worker generates atau rewrites body, ini adalah responsible untuk ETag, 304, dan max-age.
itu’s sebuah kemampuan (pendek-circuit sebuah 304 yourself) dan sebuah liability (di atas-cache dan delay recrawl).
Cloudflare Workers SEO — cheat sheet
Pick redirect alat
| Situation | gunakan |
|---|---|
| sebuah sedikit dozen static redirects | Bulk Redirects / Redirect aturan (Tidak code) |
| Thousands, keyed oleh URL | Worker + KV |
| Relational / per-locale, queried | Worker + D1 |
| Redirect dan rewrite headers together | Worker |
** three caches**
| Layer | Apa ini adalah | Anda touch ini melalui |
|---|---|---|
| Workers Cache API | Programmable, Worker-scoped | caches.default, caches.open() |
| Cloudflare edge cache | CDN cache | cache aturan / purge |
Origin Cache-Control | respons headers | Anda origin atau Anda Worker |
HTMLRewriter handler API
getAttribute/setAttribute— baca/set sebuah tag attribute (e.g., canonicalhref)prepend/append— tambahkan markup di dalam sebuah element (e.g., sebuah tag kehead)setInnerContent— replace sebuah element’s contentsreplace— tukar element entirely
Fast facts
- CPU limit: 10 ms free / 30 ms paid (wall-clock
fetchmenunggu jangan count). - Cloaking = konten perbedaan oleh requester identity untuk manipulate rankings — tidak “the Worker read the UA.” (terjemahan) “ Worker baca UA.”
- bot Fight Mode berjalan di luar WAF Ruleset mesin — izinkan-aturan jangan reach ini; perubahan mode.
- Verify sebuah Worker perubahan: GSC Test Langsung URL +
CF-Cache-Statusheader. - Google recommends
ETag; matching ETag → kembalikan 304 dengan Tidak body.
Verify apa Googlebot sebenarnya mendapat — setelah sebuah Worker deploy
Fetch sebagai Googlebot dan diff (shell)
# Fetch as a normal browser
curl -sS -A "Mozilla/5.0" https://example.com/page/ -o user.html -D user.headers
# Fetch as Googlebot's UA
curl -sS -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \
https://example.com/page/ -o bot.html -D bot.headers
# The bodies should be identical — a diff is a cloaking red flag
diff user.html bot.html && echo "identical (good)"
# Check what cache layer served it
grep -i "cf-cache-status" bot.headers # HIT / MISS / EXPIREDKonfirmasi nyata Googlebot (UA strings adalah trivially spoofed) — reverse + forward DNS
# 1) Reverse DNS the IP from your logs — must end in googlebot.com / google.com
host 66.249.66.1
# 2) Forward DNS that hostname back — must resolve to the same IP
host crawl-66-249-66-1.googlebot.comjika either periksa fails, ini tidak Googlebot. Anda dapat juga match terhadap Google’s published googlebot.json ranges.
Baca injected tags out dari dirender HTML (DevTools console)
// Paste into the browser console on the live page to confirm your Worker's injection
[...document.querySelectorAll('link[rel="canonical"]')].map(l => l.href);
[...document.querySelectorAll('link[rel="alternate"][hreflang]')]
.map(l => `${l.hreflang} -> ${l.href}`);
[...document.querySelectorAll('script[type="application/ld+json"]')].map(s => s.textContent);sebuah minimal ETag / 304 pendek-circuit di dalam sebuah Worker
export default {
async fetch(request, env, ctx) {
const res = await fetch(request);
const body = await res.text();
const etag = `"${await sha1(body)}"`; // your hash of choice
if (request.headers.get("If-None-Match") === etag) {
return new Response(null, { status: 304 }); // no body, per Google's guidance
}
const headers = new Headers(res.headers);
headers.set("ETag", etag);
return new Response(body, { ...res, headers });
},
}; alat untuk membangun dan verifying Workers SEO
- Wrangler — Cloudflare’s CLI untuk developing, versioning, dan deploying Workers (route scoping, environments, rollback, secrets). ini adalah di mana deployment hygiene lives.
- HTMLRewriter — dibangun-di streaming HTML parser; API untuk semua body rewriting.
- Workers KV / D1 — storage untuk redirect tables dan config (KV untuk key lookups, D1 untuk SQL).
- GSC pemeriksaan URL → Test Langsung URL — fetches dan renders halaman sebagai Google so Anda dapat konfirmasi sebuah injected canonical/hreflang/JSON-LD sebenarnya landed.
CF-Cache-Statusheader (melaluicurl -Iatau DevTools Network) — tells AndaHIT/MISS/EXPIREDso Anda know apakah Anda’re looking di sebuah cached copy atau sebuah fresh Worker respons.- IndexNow — ping Bing dan lainnya participating mesin instant sebuah Worker-driven perubahan ships.
- server log analysis — ground truth untuk apakah nyata (verified) Googlebot adalah reaching Anda Worker’s routes di semua.
Audit sebuah Worker untuk SEO consistency dan cache perilaku
Review this Cloudflare Worker fetch handler as an SEO edge change. Trace the request,
response-header, body-rewrite, redirect, and caching paths. Return:
1. Every branch based on user agent, bot status, cookie, geography, or request header
2. Whether Googlebot/no-cookie traffic can receive different indexable content or SEO tags
3. HTMLRewriter selectors that fail when a tag is missing or create duplicates
4. Redirect lookups that can chain, loop, or fall through unexpectedly
5. Each use of the Cache API, Cloudflare edge cache behavior, and origin Cache-Control—kept as separate layers
6. Cache keys that could mix variants or preserve a stale canonical/robots/header change
7. A minimal test matrix for users, verified bots, cache hit/miss, and representative URLs
Apply the same content and SEO logic to bots and users. Flag intentional personalization
for human review rather than calling it cloaking automatically. Do not invent Cloudflare
settings, bindings, routes, cache rules, or origin behavior that are not in my input.
Worker code, bindings, routes, and relevant cache/security configuration:
[PASTE INPUT]Review sebuah HTMLRewriter perubahan sebelum deployment
Audit this HTMLRewriter implementation for one SEO task: [CANONICAL / HREFLANG / JSON-LD].
Check whether it handles existing, missing, and duplicate elements; produces valid absolute
URLs or JSON; applies to the intended route cohort; and behaves identically for every
requester. Then return corrected code plus raw-response and rendered-response tests.
Do not add product, organization, locale, URL, or schema facts that are not supplied.
Code and expected per-route output:
[PASTE INPUT] Uji pemahaman Anda: Cloudflare Workers SEO
Five quick pertanyaan pada melakukan SEO teknis dengan Cloudflare Workers. Pick sebuah jawaban untuk setiap, lalu periksa.
Resources worth Anda time
My related writing
- 11 jenis dari Redirects & mereka SEO Impact (Ahrefs) — redirect options pada Cloudflare, dan mengapa I prefer edge-tingkat redirects di atas server-tingkat.
- Beginner’s Guide untuk SEO teknis (Ahrefs) — di mana edge perubahan fit di wider picture.
- JavaScript SEO Issues & Best Practices (Ahrefs) — rendering side, relevant untuk apa pun pre-render-pada—edge temptation.
My speaking
- Fine-Tune Anda SEO teknis, kecepatan halaman, dan Security (Marketing Speak interview) — di mana I walk melalui menggunakan Cloudflare Workers untuk rewrite sebelum pengguna ever sees halaman, dan offloading redirects untuk CDN. Spoken-kata interview transcript; treat spesifik phrasings sebagai paraphrase alih-alih tepat quotes.
dari sekitar industry
- Diving ke SEO teknis menggunakan Cloudflare Workers — Igor Krestov (SALT.agency) & Dan Taylor pada Cloudflare blog; origin dari filter-chain (permintaan/respons/body) pattern.
- Apa adalah edge SEO? (mesin pencari Land) — concept ini artikel’s parent hub covers, di ketiga-party form.
- Edge SEO (Dan Taylor) — dari person siapa coined istilah off Cloudflare Workers research.
- HTMLRewriter (Cloudflare docs) — canonical reference untuk body-rewriting API.
- Bagaimana cache berfungsi (Cloudflare docs) — untangles Cache API dari edge cache.
- Redirects untuk AI Training (Cloudflare blog) — edge-enforced canonicalization sebagai sebuah product fitur, sebuah berguna contrast untuk hand-rolling ini di sebuah Worker.
Go deeper / sideways
- Edge SEO — parent hub: umum concept, platform perbandingan, Snippets vs. Workers, cloaking aturan di penuh.
Log perubahan
Diperbarui 8 Agu 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.
Diperbarui 18 Jul 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.