---
title: "اعتبارسنجی داده‌های ساختاری چندزبانه در لبه و به‌روزرسانی خودکار JSON‑LD"
---

# اعتبارسنجی داده‌های ساختاری چندزبانه در لبه و به‌روزرسانی خودکار JSON‑LD

موتورهای جستجوی مدرن به‌طور قابل‌توجهی به **داده‌های ساختاری** برای درک محتوای یک صفحه وابسته هستند. برای سایت‌های چندزبانه، این چالش چند برابر می‌شود: هر نسخه زبانی باید نشانه‌گذاری دقیق **schema.org** داشته باشد و هر ناسازگاری می‌تواند منجر به جریمه‌های ایندکسینگ یا کاهش دیده شدن شود. اعتبارسنجی در سرور مبداء مفید است، اما اغلب مشکلاتی که توسط تبدیل‌های بعدی مانند بازنویسی‌های لبه‌ای، فشرده‌سازی یا افزونه‌های بومی‌سازی ایجاد می‌شود را شناسایی نمی‌کند. انتقال گام اعتبارسنجی به لبه — جایی که محتوا از طریق **شبکه توزیع محتوا (CDN)** سرو می‌شود — امکان اصلاح لحظه‌ای را فراهم می‌کند و اطمینان می‌دهد هر بازدیدکننده نسخه‌ای تمیز و سازگار با موتورهای جستجو دریافت می‌کند.

این راهنما تمام فرآیند را قدم‌به‑قدم شرح می‌دهد: از تشخیص زبان درخواست، دریافت قالب مناسب JSON‑LD، اعتبارسنجی نشانه‌گذاری نسبت به آخرین مشخصات schema.org، رفع خطاهای رایج، و در نهایت تزریق اسنیپت به‌روزرسانی‌شده در پاسخ HTTP. این روش کاملاً **بدون هوش مصنوعی** است و تنها از اعتبارسنجی‌های مبتنی بر قواعد تصمیم‌گیری واضح و زبان‌های اسکریپت‌نویسی لبه‌ای پشتیبانی‌شده توسط CDNهای مشهور مانند Cloudflare Workers، Fastly Compute@Edge و Akamai EdgeWorkers استفاده می‌کند.

## چرا اعتبارسنجی در لبه در مقایسه با بررسی فقط در مبداء برتر است

هنگامی که یک صفحه در مبداء اعتبارسنجی می‌شود، هنوز در معرض خطرهای زیر است:

1. **بازنویسی‌های مبتنی بر هدر** که خصوصیات زبانی را اضافه یا حذف می‌کند.
2. **نرمال‌سازی پویا URL** که URLهای اصلی را بدون به‌روزرسانی داده‌های ساختاری تغییر می‌دهد.
3. **تکه‌تکه شدن کش** که باعث می‌شود JSON‑LD قدیمی پس از تغییر زبان در کش لبه باقی بماند.
4. **آثار فشرده‌سازی** که به‌طور ناخواسته رشته‌های JSON را قطع می‌کند.

با انتقال گام اعتبارسنجی به لبه، سیستم می‌تواند:

- **دقیقا** همان payloadی را که به کلاینت تحویل می‌شود بررسی کند.
- اصلاحات مخصوص به زبان را **قبل از** کش شدن پاسخ اعمال کند.
- تعداد **نمایش‌های نامعتبر** که به خزنده‌های موتورهای جستجو می‌رسد، کاهش دهد.

## اجزای اصلی پایپلاین اعتبارسنجی در لبه

### ۱. تشخیص زبان

اسکریپت لبه هدر `Accept-Language`، پیشوندهای مسیر URL (`/en/`، `/fr/` و ...)، و پارامترهای پرس‌و‌جوی اختیاری (`?lang=es`) را بررسی می‌کند. کد زبانی شناسایی‌شده (`lang`) به‌عنوان کلید اصلی برای انتخاب قالب صحیح JSON‑LD استفاده می‌شود.

### ۲. بازیابی قالب

یک **فروشگاه کلید‑مقدار** (مانند Cloudflare KV یا Fastly Edge Dictionary) اسنیپت‌های پیش‌ساخته JSON‑LD را برای هر زبان نگهداری می‌کند. اسکریپت لبه قالب را با کلید کش ترکیبی زیر دریافت می‌کند:

```
"jsonld:" + request.host + ":" + lang
```

### ۳. موتور اعتبارسنجی

موتور اعتبارسنجی یک **validator سبک وزن schema.org** است که به‌صورت WebAssembly کامپایل شده است. این موتور بررسی می‌کند:

- خصوصیات الزامی برای نوع هدف (مثلاً `Article`، `Product`).
- فرمت صحیح IRI برای `@id` و `url`.
- استفاده صحیح از رشته‌های متنی با تگ زبان.

اگر اعتبارسنجی شکست بخورد، لیستی از کدهای خطا برگردانده می‌شود که به **هندلرهای اصلاح** پیش‌تعریف‌شده نگاشت می‌شوند.

### ۴. هندلرهای اصلاح خودکار

هندلرهای اصلاح توابع تصمیم‌گیری قطعی هستند که:

- فیلدهای گمشده `@type` را وارد می‌کنند.
- URLهای معیوب را با نسخهٔ اصلی استخراج‌شده از درخواست جایگزین می‌کنند.
- مقادیر `inLanguage` گمشده را بر اساس زبان شناسایی‌شده اضافه می‌کنند.
- خصوصیات تکراری را که ممکن است پارسرها را سردرگم کنند، حذف می‌کنند.

چون هر هندلر بر پایهٔ قواعد است، سیستم **قابل پیش‌بینی** می‌ماند و از خطرات مدل‌های احتمالی هوش مصنوعی دوری می‌کند.

### ۵. تزریق در پاسخ

پس از اعتبارسنجی و اصلاح JSON‑LD، اسکریپت آن را داخل تگ `<head>` HTML، درست قبل از بسته شدن `</head>`، تزریق می‌کند. اگر صفحهٔ اصلی قبلاً یک بلوک `<script type="application/ld+json">` داشته باشد، اسکریپت آن را جایگزین می‌کند؛ در غیر این صورت یک بلوک جدید اضافه می‌شود.

پاسخ نهایی سپس با **کلید کش آگاه به زبان** ذخیره می‌شود تا از آلودگی متقابل زبان‌ها جلوگیری شود.

## نمودار جریان انتها‑به‑انتها

```mermaid
graph LR
    A["درخواست مشتری"] --> B["Edge Worker"]
    B --> C["تشخیص زبان"]
    C --> D["دریافت JSON‑LD مخصوص زبان"]
    D --> E["اعتبارسنجی با موتور schema.org"]
    E -->| معتبر | F["تزریق JSON‑LD"]
    E -->| نامعتبر | G["اجرای هندلرهای اصلاح"]
    G --> F
    F --> H["کش پاسخ با کلید زبان"]
    H --> I["ارسال پاسخ به مشتری"]
```

در این نمودار، متن هر گره داخل علامت‌های دو‌گوشه قرار گرفته است تا با الزامات Mermaid سازگار باشد و جریان نشان می‌دهد که اعتبارسنجی و اصلاح قبل از کش شدن انجام می‌شود.

## نمونهٔ پیاده‌سازی (JavaScript برای Cloudflare Workers)

در ادامه یک مثال مختصر آورده شده که گام‌های اصلی را بدون وابستگی به سرویس‌های هوش مصنوعی نشان می‌دهد. کد از کتابخانه `@cloudflare/kv-asset-handler` برای دریافت قالب استفاده می‌کند و از یک validator کوچک WebAssembly که از پروژهٔ منبع باز `jsonld-validator` کامپایل شده است، بهره می‌برد.

```javascript
addEventListener('fetch', event => {