تحسين محركات البحث على Cloudflare Workers

كيفية إجراء تغييرات تقنية في تحسين محركات البحث على Cloudflare Workers — معالج الجلب، HTMLRewriter لحقن canonical/hreflang/JSON-LD، عمليات إعادة التوجيه المدعومة بـ KV، واجهة برمجة تطبيقات التخزين المؤقت مقابل التخزين المؤقت الطرفي مقابل Cache-Control، حدود التمويه، وكيف يمكن أن يحجب Bot Fight Mode روبوت Google.

نُشر أول مرة: 3 يوليو 2026 · آخر تحديث: 7 أغسطس 2026 · Advanced
اللغات
دليل واحد في هذه الصفحة

تحسين محركات البحث على Cloudflare Workers هو القيام بتحسين محركات البحث التقني على بيئة التشغيل الخادمة لـ Cloudflare: لا يرى Worker سوى الطلبات التي يطابقها مساره، وكل واحد منها يدخل إلى معالج جلب واحد حيث تقوم بإعادة كتابة الطلب ورؤوس الاستجابة ونص الاستجابة. تتم إعادة كتابة النص عبر HTMLRewriter — الآلية الفعلية لحقن وسم canonical، أو إصلاح hreflang، أو إضافة JSON-LD دون نشر CMS — ويجب أن تكون مقاومة للفشل في حالات النص المفقود أو المكرر أو غير HTML. عمليات إعادة التوجيه على نطاق واسع تنتمي إلى KV أو D1؛ عمليات إعادة التوجيه المجمعة/القواعد أبسط للمجموعات الصغيرة، ولكن اختر مالكًا واحدًا لكل عنوان URL حتى لا تتعارض الأنظمة. ثلاثة أشياء منفصلة تشترك في كلمة cache — واجهة برمجة تطبيقات التخزين المؤقت لـ Workers، والتخزين المؤقت الطرفي لـ Cloudflare، وCache-Control من الأصل — والخلط بينها هو سبب عدم ظهور وسم محقون؛ شخّص المشكلة عبر مفتاح التخزين المؤقت والطبقة وTTL والإبطال. القاعدة الصارمة هي التمويه: طبق نفس المنطق لروبوت Google والمستخدمين. الجرح الذاتي الأكثر خصوصية لـ Workers هو حجب Bot Fight Mode لروبوت Google على خط أنابيب لا تصل إليه قواعد السماح في جدار الحماية الخاص بك. أطلق كل تغيير يؤثر على تحسين محركات البحث مع بيانات وصفية مسجلة للإصدار واسترجاع مُختبر، ثم تحقق باستخدام GSC URL Inspection ورأس CF-Cache-Status. راجع مركز Edge SEO للمفهوم العام.

الخلاصة — لا يرى Cloudflare Worker سوى الطلبات التي تطابق المسار المُهيأ له، ويعترض كل طلب في معالج fetch واحد، حيث تقوم بثلاثة أشياء بالتسلسل: إعادة كتابة الطلب، وإعادة كتابة ترويسات الاستجابة، وإعادة كتابة نص الاستجابة عبر HTMLRewriter. هذه هي الآلية الحقيقية وراء “حقن canonical” أو “إصلاح العنوان” — وهي تحتاج إلى أن تكون idempotent، ومُختبرة ضد الاستجابات المفقودة، والمكررة، وغير HTML، وليس فقط المسار السعيد. عمليات إعادة التوجيه على نطاق واسع تعيش في KV (بحث سريع بالمفتاح) أو D1 (علائقي)؛ تغطي Bulk Redirects/Rules المجموعات الصغيرة بشكل أبسط، وأنا أفضّل عمومًا عمليات إعادة التوجيه على مستوى الحافة على مستوى الخادم — ولكن اختر مالكًا واحدًا لكل URL، نظرًا لأن إعادة توجيه Worker، وإعادة توجيه Bulk Redirect، وإعادة توجيه الأصل يمكن أن تعمل جميعها على نفس المسار. ثلاثة أشياء مختلفة تشترك في كلمة “cache” — Workers Cache API (caches.default)، وذاكرة التخزين المؤقت لحافة Cloudflare، و Cache-Control الأصلية — والخلط بينها هو السبب المعتاد لـ “الوسم الخاص بي لم يظهر”؛ شخّص التقادم حسب مفتاح التخزين المؤقت، والطبقة، وTTL، والإبطال بدلاً من التخمين. إرشادات Google الخاصة بـ ETag / If-None-Match / 304 قابلة للتطبيق مباشرة على Worker الذي يملك الاستجابة. خط التمويه: منطق متطابق لكل طالب. أكثر جرح ذاتي خاص بـ Workers هو Bot Fight Mode، الذي يعمل خارج WAF Ruleset Engine، لذا فإن قواعد “السماح” العادية لا تصل إليه. أرسل كل تغيير يؤثر على SEO مع بيانات إصدار مسجلة، وتراجع مُختبر، و شرط إيقاف — ثم تحقق باستخدام GSC URL Inspection و CF-Cache-Status.

ما هي هذه المقالة (وما ليست)

هذا هو الرفيق العملي على مستوى الكود لمركز SEO على الحافة. يمتلك المركز التعريف العام، وجدول مقارنة المنصات (Workers، Akamai، Fastly، Lambda@Edge، Vercel، Netlify)، وقرار Snippets-vs-Workers، و المعالجة الكاملة لقاعدة التمويه. لن أعيد اشتقاق أي من ذلك هنا. هذه الصفحة تتعمق مستوى واحدًا في Cloudflare Workers تحديدًا — وقت التشغيل الذي يعمل عليه worker هذا الموقع نفسه، المُوصَّل عبر run_worker_first في wrangler.toml — مع واجهات برمجة تطبيقات حقيقية بدلاً من التلويح باليد “الحوسبة الطرفية يمكنها حقن الوسوم”.

ملاحظة قبل الكود: Google ليس لديها وثائق خاصة بـ Cloudflare Workers. الإرشادات الرسمية التي تحكم هذا (سياسة التمويه، التخزين المؤقت HTTP، زحف CDN) هي عامة وتنطبق على أي تنفيذ على الحافة. أفضل قول ذلك بوضوح بدلاً من التلميح إلى أن مستند Google موجود وهو غير موجود.

كيف يقع Worker في مسار الطلب/الاستجابة

Worker هو نص برمجي بدون خادم يعمل على V8 isolates. كل طلب يتم توجيهه إليه يدخل عبر معالج fetch. 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 “موجَّه إليه” يقوم بعمل حقيقي في هذه الجملة: لا يرى Worker سوى الطلبات التي تطابق المسار أو النطاق المخصص المُهيأ له — كل شيء آخر لا يصل إلى معالج fetch على الإطلاق. حيث يمكن أن يتطابق مساران مع نفس URL، يأخذ النمط الأكثر تحديدًا الأسبقية، لذا قبل أن تثق في سلوك Worker لـ URL معين، تأكد من أن المسار يطابقه فعلاً وتحقق من الإصدار المنشور الذي يعمل على ذلك المسار (بيئات Wrangler والطرح التدريجي تعني أن الإصدار الذي يخدم حركة المرور ليس دائمًا الذي في محررك). داخل المعالج يمكنك القيام بثلاثة أشياء مميزة، بالترتيب:

  1. إعادة كتابة الطلب قبل أن يذهب إلى أصلك.
  2. إعادة كتابة ترويسات الاستجابة في طريق العودة.
  3. إعادة كتابة نص الاستجابة — عبر HTMLRewriter.

إليك الشكل الأدنى:

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، الذي صاغ مصطلح “edge SEO” بناءً على أبحاث Cloudflare Workers، بنى أدواته كسلسلة فلاتر — فلتر طلب، وفلتر استجابة، وفلتر نص. هذا هو نفس النمط ثلاثي المراحل؛ لقد سموه فقط. إبقاء هذه المراحل الثلاث منفصلة في ذهنك يحافظ على وضوح Worker.

إعادة كتابة HTML باستخدام HTMLRewriter

HTMLRewriter هو محلل HTML الدفق من Cloudflare، وهو الواجهة البرمجية الفعلية وراء كل حيلة “حقن وسم”. 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 يمكنك تسجيل معالجات عناصر .on(selector, handler)، ويحصل المعالج على getAttribute / setAttribute، وprepend / append، وsetInnerContent، وreplace. نظرًا لأنه يدفق، فأنت لا تخزن المستند بأكمله في الذاكرة.

حقن أو إصلاح وسم 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);

إذا لم تكن الصفحة تحتوي على canonical على الإطلاق، فقم بإرفاق معالج بـ head وappend واحد بدلاً من تعديل وسم موجود. في كلتا الحالتين، تذكر الدرس من جانب canonicalization: rel=canonical هو تلميح، وليس أمرًا — يتيح لك Worker تعيينه بشكل متسق عبر منصة بأكملها، لكن Google لا تزال تقرر.

يفترض CanonicalHandler أعلاه أن الوسم موجود بالفعل وأن الاستجابة هي HTML. لا شيء من هذا مضمون في الإنتاج، وارتكاب الخطأ هنا هو كيف ينتهي بك الأمر بوسمين canonical على صفحة واحدة بدلاً من واحد. قبل نشر إعادة كتابة مثل هذه، اجعلها idempotent واختبرها ضد:

  • لا يوجد canonical موجود — يحتاج المعالج الخاص بك إلى اكتشاف الحالة المفقودة وappend واحد إلى head، وليس تجاهل link[rel="canonical"] الذي لا يطابق شيئًا.
  • يوجد canonical مكرر أو تالف بالفعل — قرر ما إذا كنت تزيل الوسم الشارد أو تترك إعادة الكتابة لإضافة وسم ثانٍ (الأخير خطأ حقيقي، وليس حالة حافة — الوسوم canonical المكررة مشكلة شائعة يسببها المرء لنفسه).
  • استجابة غير HTML — مسار API، أو صورة، أو استجابة إعادة توجيه تمر عبر نفس Worker لا ينبغي تشغيلها عبر HTMLRewriter على الإطلاق؛ قم بتقييد التحويل إلى المسارات وأنواع المحتوى التي تحققت منها فعليًا.
  • تشغيل التحويل مرتين على نفس الاستجابة (إعادة محاولة، fetch متداخل) — تأكد من أنه لا يعيد إضافة وسم ثانٍ.

إضافة أو تصحيح بدائل hreflang

نفس الآلية، مدفوعة من الإعدادات. تقوم بإلحاق link[rel="alternate"] واحد لكل لغة إلى head. إذا كانت البدائل الخاصة بك لكل لغة وعلائقية، فإن هذا الإعداد ينتمي إلى D1؛ إذا كان بحثًا مسطحًا، فإن KV كافٍ. النقطة هي أن HTMLRewriter يحقنها بشكل متطابق لكل طالب — فأنت لا تتفرع على وكيل المستخدم.

حقن بيانات JSON-LD المنظمة

new HTMLRewriter().on("head", {
  element(head) {
    head.append(
      `<script type="application/ld+json">${JSON.stringify(schema)}</script>`,
      { html: true }
    );
  },
});

حدود وحدة المعالجة المركزية التي تؤثر عند التوسع

ادعاء منافس واحد أود أن أعترض عليه هو “أقل من مللي ثانية، بدون قيود.” السقف الحقيقي هو وقت وحدة المعالجة المركزية: 10 مللي ثانية على الخطة المجانية، 30 مللي ثانية على المدفوعة (وقت الحائط في انتظار fetch لا يُحتسب — وقت وحدة المعالجة المركزية يُحتسب). بالنسبة لإعادة الكتابة النموذجية لن تلاحظ ذلك أبدًا. بالنسبة لتمريرات HTMLRewriter الثقيلة على صفحات كبيرة جدًا، فهو قيد حقيقي يجب التصميم حوله، وليس تخويفًا.

عمليات إعادة التوجيه على الحافة: KV مقابل D1 مقابل القواعد

أفضل عادةً أن تكون عمليات إعادة التوجيه على الحافة (مستوى CDN) بدلاً من وجودها على الخادم — فهي تخفف العمل عن الأصل وتُطبق قبل إنشاء الصفحة على الإطلاق. على وجه التحديد في Cloudflare، في دليلي في Ahrefs حول عمليات إعادة التوجيه لتحسين محركات البحث أوضحت أن لديك عدة خيارات: عمليات إعادة توجيه مفردة أو جماعية، قواعد إعادة التوجيه، قواعد الصفحات، أو Workers مع أزواج مفتاح-قيمة — أو Worker يعدل الرؤوس لإضافة إعادة توجيه.

بالنسبة لجدول مدفوع بواسطة Worker، KV هو الموطن الطبيعي: بحث مفتاح سريع ومتسق في النهاية حسب 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);
  },
};

استخدم D1 عندما تكون عمليات إعادة التوجيه علائقية (SQL لكل لغة، لكل مقطع تريد الاستعلام عنه). واعرف متى يكون Worker مبالغًا فيه: لمجموعة صغيرة وثابتة من عمليات إعادة التوجيه، فإن عمليات إعادة التوجيه المجمعة أو قواعد إعادة التوجيه من Cloudflare أبسط ولا تتطلب أي كود على الإطلاق. لا تقم ببناء Worker KV يدويًا لخمسين عملية إعادة توجيه.

اختر مالكًا واحدًا لعنوان URL معين ولا تدع إعادة توجيه Worker أو إعادة توجيه Bulk أو قاعدة إعادة توجيه أو إعادة توجيه من الأصل تنطبق جميعها على نفس المسار — فهي أنظمة منفصلة يمكن لكل منها أن يعمل على نفس الطلب، وعندما يتطابق أكثر من واحد، فأنت تتصيد أخطاء الأولوية بدلاً من إعادة توجيه نظيفة. قبل إضافة إعادة توجيه في أي مكان، تحقق مما إذا كانت هناك إعادة توجيه موجودة بالفعل لهذا المسار في الأنظمة الأخرى، واختر الطبقة بناءً على تعقيد المطابقة (1:1 بسيط مقابل قائم على الأنماط)، والحجم، ومن يحتاج إلى المراقبة أو التراجع عنها — إعادة توجيه Worker تعيش في الكود والسجلات الخاصة بك؛ بينما تعيش إعادة توجيه Bulk أو قاعدة في لوحة التحكم وهي أسهل لغير المطور لتدقيقها أو التراجع عنها.

التخزين المؤقت: ثلاثة أشياء مختلفة، اسم واحد مربك

هذا هو القسم الذي تتجاهله صفحات المنافسين، وهو الذي يولّد أكبر قدر من الارتباك حول “لماذا لم يظهر تغييري”. ثلاث طبقات منفصلة تشترك في كلمة cache:

  • Workers Cache APIcaches.default و caches.open(). هذا مخزن مؤقت قابل للبرمجة بنطاق Worker تقرأه وتكتبه في الكود.
  • ذاكرة التخزين المؤقت الطرفية لـ Cloudflare — ذاكرة التخزين المؤقت لشبكة CDN التي تخدم أصولك. وهي متميزة عن Cache API.
  • Cache-Control من الأصل — الرؤوس التي يضبطها أصل الخادم (أو Worker الخاص بك)، والتي تؤثر على كل ما سبق وعلى ما يفعله Googlebot.

اخلط بينها وستقسم أن تغييرًا لم يُنشر بينما هو في الواقع يُقدَّم من طبقة لم تقم بمسحها.

عندما لا يظهر تغيير حقيقي، لا تخمّن — شخّص المشكلة طبقة بطبقة:

  1. مفتاح التخزين المؤقت. ما سمات الطلب التي تحدد ما إذا كان طلبان يصلان إلى نفس الإدخال المخزن مؤقتًا (URL، وأحيانًا الرؤوس أو ملفات تعريف الارتباط إذا كان مفتاح التخزين المؤقت يتضمنها)؟ إعادة كتابة تختلف بناءً على شيء غير موجود في مفتاح التخزين المؤقت يمكن أن تخدم النسخة الخاطئة.
  2. أي طبقة خدمت الاستجابة. تحقق من CF-Cache-Status (HIT/MISS/EXPIRED/DYNAMIC) لمعرفة ما إذا كانت ذاكرة التخزين المؤقت الطرفية أجابت على الإطلاق، أم أن الطلب وصل إلى Worker الخاص بك.
  3. الموقع/الحالة. ذاكرة التخزين المؤقت لـ Cloudflare موزعة عبر مراكز البيانات — المسح أو النشر الجديد لا يبطل بالضرورة كل موقع طرفي فورًا.
  4. TTL والقاعدة التي ضبطته. تأكد مما إذا كانت قاعدة تخزين مؤقت، أو رأس Cache-Control من أصل الخادم، أو رأس ضبطه Worker نفسه هو ما يتحكم في TTL.
  5. الإبطال. هل مسحت عنوان URL المحدد، أو مسحت كل شيء، أو اعتمدت على انتهاء صلاحية TTL؟ إدخال Cache API المملوك لـ Worker (caches.default) يحتاج إلى delete() صريح خاص به — مسح ذاكرة التخزين المؤقت لشبكة CDN لا يلمسه.

ما يفعله Googlebot مع ETag / If-None-Match / 304

إذا كان Worker الخاص بك يولّد الاستجابة أو يعيد كتابتها، فهو يملك رؤوس التخزين المؤقت — مما يعني أن إرشادات التخزين المؤقت HTTP لشهر ديسمبر 2024 من Google قابلة للتنفيذ مباشرة بالنسبة لك. تدعم Google التخزين المؤقت الاستدلالي HTTP عبر ETag/If-None-Match و Last-Modified/If-Modified-Since، وتوصي بشدة بـ ETag لأنه أقل عرضة للأخطاء، وتقول إنه عندما يتطابق ETag الخاص بالزاحف، يجب أن يعيد خادمك 304 Not Modified بدون نص. يمكن لـ Worker الذي يولّد الاستجابة تنفيذ ذلك بالضبط: حساب ETag، ومقارنته بـ If-None-Match، والاختصار إلى 304 بنفسه — مما يوفر الحوسبة ويعطي Googlebot إشارة سريعة وقابلة للتخزين المؤقت.

مقايضة max-age لإعادة الزحف

تقول Google أيضًا إنه يجب التفكير في ضبط Cache-Control: max-age لمساعدة الزواحف على تحديد موعد إعادة الزحف. المشكلة بالنسبة لـ Worker يعيد كتابة HTML: max-age عدواني على صفحة تغيّرت للتو علاماتها المحقونة عبر Worker يمكن أن يؤخر رؤية Googlebot للتحديث الذي نشرته للتو. لا تضع عمر تخزين مؤقت طويلًا على HTML مُعاد كتابته وتنساه.

حدود التمويه (cloaking)، مطبقة على Workers

القاعدة الصارمة، بمصطلحات Workers: شغّل نفس المنطق لكل طالب. سياسة البريد العشوائي من Google تعرّف التمويه (cloaking) بأنه تقديم محتوى مختلف للمستخدمين ومحركات البحث للتلاعب بالترتيب، وتحديدًا تشير إلى إدراج نص أو كلمات مفتاحية فقط عندما يكون الطالب محرك بحث.

بعض التوضيحات، لأن الناس يبالغون في التصحيح هنا:

  • فحص User-Agent ليس تمويهًا تلقائيًا. تسجيل حركة مرور الروبوتات، أو تقديم استجابة مخزنة مؤقتًا بشكل أسرع لأي عميل، أمر مقبول. الخط الفاصل هو اختلاف المحتوى بناءً على هوية الطالب، بهدف التلاعب بالترتيب.
  • اختبار A/B بتقسيم الصفحات على Workers مقبول. تقسيم المستخدمين حسب URL ومعاملة كل طالب بنفس الطريقة أمر مشروع. التقسيم حسب من يسأل — روبوت مقابل إنسان — ليس كذلك.

مثال عملي على النمط الآمن: بوابة المعاينة الخاصة بهذا الموقع هي Worker تُرجع خطأ 404 لأي مسار /preview/ ما لم يطابق ملف تعريف ارتباط سرًا. تُرجع هذا الـ 404 للجميع بدون ملف تعريف الارتباط — بما في ذلك Googlebot. هذا هو الشكل الآمن تمامًا: لا يخفي شيئًا عن الروبوتات ويُظهر شيئًا آخر للمستخدمين؛ بل يطبق قاعدة واحدة بشكل موحد.

ولا تعتمد على خطوة ما قبل العرض الخاصة بالروبوتات فقط حتى لو بنيتها بشكل نظيف على Workers. لقد وصف Google العرض الديناميكي بأنه حل مؤقت وليس حلاً طويل الأمد; أي Worker يعرض مسبقًا للروبوتات فقط يرث هذا الإهمال.

كيف يمكن لـ Worker أن يحجب Googlebot أو يبطئه عن طريق الخطأ

هذه هي الطريقة الأكثر خصوصية بـ Workers لإطلاق النار على قدمك، وعادةً لا تكون في كود الـ Worker الخاص بك.

وضع Bot Fight Mode يعمل خارج محرك القواعد

Bot Fight ModeSuper Bot Fight Mode) يمكن أن يُنتج نتائج إيجابية خاطئة ضد الزاحفين الشرعيين، بما في ذلك Googlebot. الفخ: يتم تقييم Bot Fight Mode على خط أنابيب منفصل عن محرك قواعد WAF، لذا فإن قواعد “السماح” أو “التخطي” المخصصة العادية في WAF لا تتجاوزه. إذا كان Bot Fight Mode يتحدى Googlebot، فلا تصلحه بقاعدة سماح — بل يجب عليك تغيير أو تعطيل الوضع نفسه. (تحقق من الآليات الحالية مقابل وثائق Cloudflare Bot Fight Mode و Super Bot Fight Mode قبل الاعتماد عليها — منتجات الروبوتات تتغير.)

نمط القاعدة المخصصة للروبوتات الموثقة

تكشف Cloudflare عن حقل cf.client.bot ونمط السماح للروبوتات الموثقة حتى تتمكن من السماح للزاحفين المعروفين بأنهم جيدون في قواعدك المخصصة — مفيد لجانب WAF، على الرغم من (كما هو مذكور أعلاه) أنه لا يصل إلى Bot Fight Mode.

شبكة CDN نفسها محايدة إلى إيجابية

لتوضيح الأسطورة: Cloudflare-كـ-CDN لا تضر بـ SEO. عمل Google الخاص لعام 2024 Crawling December يلاحظ أن Google تزيد معدل الزحف عندما تكتشف CDN — ولكن CDN يمكنها أيضًا حجب Googlebot عن طريق الخطأ عبر قواعد WAF/الروبوتات، وأن 503 أفضل من صفحة وسيطة للتحقق من الروبوت. الخطر هو Worker أو إعداد روبوتات تم تكوينه بشكل خاطئ، وليس البنية التحتية.

التحقق مما تلقاه Googlebot فعليًا

بعد أي نشر لـ Worker، تأكد مما حصل عليه الزاحف فعليًا — لا تفترض:

  • GSC URL Inspection → Test Live URL. يجلب الصفحة كما يراها Google ويعرض HTML المعروض، لذا يمكنك التأكد من أن canonical/hreflang/JSON-LD المحقون موجود فعلاً.
  • تحقق من CF-Cache-Status بجانب HTML. HIT / MISS / EXPIRED يخبرك ما إذا كنت تنظر إلى استجابة Worker جديدة أو مخزنة مؤقتاً — أسرع طريقة لاكتشاف “التغيير الذي لم يظهر” والذي هو في الحقيقة مشكلة طبقة تخزين مؤقت.
  • اجلب كـ Googlebot مباشرة. اطلب باستخدام وكيل مستخدم Googlebot وقارن — لكن تذكر أن مطابقة السلسلة لا تثبت شيئاً عن الهوية؛ تحقق من Googlebot الحقيقي عبر DNS عكسي + أمامي مقابل نطاقات Google المنشورة (انظر تبويب Scripts).

نظافة النشر الخاصة بـ Workers

نجاح wrangler deploy يخبرك أن السكربت تم شحنه — لكنه لا يخبرك أن Googlebot يحصل على المخرجات المعروضة الصحيحة. تعامل مع كل تغيير Worker يؤثر على SEO كإصدار بسجل، وليس مجرد دفع:

  • حدد نطاق مساراتك. لا تشغل Worker على /* افتراضياً. طابقه مع المسارات التي يحتاجها في أنماط المسارات في wrangler.toml حتى لا يتمكن خطأ من إسقاط موقعك بالكامل.
  • تحقق من الحدود الحالية قبل أن تعد بالقدرة. حدود وقت CPU، وعدد الطلبات الفرعية، وحجم السكربت تختلف حسب الخطة وتتغير بمرور الوقت — تأكد من صفحة حدود Cloudflare الحالية قبل تصميم إعادة كتابة حول سقف معين، بدلاً من الاعتماد على رقم متذكر.
  • سجل بيانات الإصدار للإصدار. نموذج الإصدارات والنشر من Cloudflare يتتبع إصدار المصدر، وتاريخ التوافق، والروابط، والمسارات لكل نشر — لاحظ أي إصدار نشط على أي مسار حتى يكون ادعاء “الـ Worker يفعل X” قابلاً للتحقق مقابل ما هو منشور فعلاً، وليس ما في محررك.
  • قم بالإصدار والتراجع باستخدام بيئات Wrangler. انشر إلى بيئة تجريبية، وطرح تدريجياً بالنسبة المئوية، واحتفظ بالقدرة على العودة إلى الإصدار السابق فوراً.
  • استخدم سجلات محددة النطاق لمراقبة الطرح — مع وضع حدودها في الاعتبار. سجلات Workers وتتبع السجلات من Cloudflare يمكن أن تدعم تصحيح أخطاء الطرح التدريجي، لكن السجلات تُعيّن وتُحتفظ بها لفترة محدودة — تعامل معها كدليل محدد للطلبات التي التقطتها، وليس سجلاً كاملاً لكل زيارة زاحف.
  • حدد شرط إيقاف واختبر التراجع قبل أن تحتاجه. قرر مسبقاً أي سلوك ملاحظ (معدل خطأ، استجابة خاطئة في فحص عشوائي، انخفاض معدل الزحف) يوقف الطرح، وتأكد من أن مسار التراجع يعمل فعلاً بدلاً من افتراض أنه سيعمل.
  • امسح ذاكرة التخزين المؤقت كجزء من النشر. بما أن ثلاث طبقات تخزين مؤقت قيد اللعب، اجعل مسح/إبطال ذاكرة التخزين المؤقت خطوة صريحة في شحن إعادة كتابة، وليس فكرة لاحقة.

ملاحظة عن Bing، وشيء استشرافي

Bing ليس لديه إرشادات خاصة بـ Cloudflare/الحافة أيضاً. لكن لأن نشر Worker فوري بينما الزحف ليس كذلك، فإن IndexNow هو الاقتران الطبيعي — أطلقه لحظة شحن جدول إعادة توجيه أو تغيير علامة مدفوع بـ Worker حتى يعيد Bing (ومحركات أخرى مشاركة) الزحف بسرعة. ويستحق نظرة: Cloudflare شحنت توحيداً مفروضاً على الحافة كميزة منتج (“Redirects for AI Training”) — زواحف تدريب الذكاء الاصطناعي الموثقة تحصل على 301 إلى عنوانك الأساسي بتبديل واحد. إنه تباين مفيد مع منطق التوحيد اليدوي في Worker الخاص بك، وتذكير بأن “تقديم شيء مختلف للزواحف عن المستخدمين” هو نمط شككت Microsoft علناً فيه في ميزات Cloudflare الأخرى لزواحف الذكاء الاصطناعي — فحص جيد لأي Worker مشروط بالبوت.

للصورة الأوسع — مقارنة المنصات، Snippets مقابل Workers، زوايا قائمة التطوير والحوكمة — عد إلى مركز SEO على الحافة.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.