آلية Signed Exchange (SXG)

وآلية SXG هي آلية تسليم تتيح مصادقة مصدر المورد بشكل مستقل عن كيفية تسليمه.

Katie Hempenius
Katie Hempenius
Devin Mullins
Devin Mullins

Signed Exchange (SXG) هي آلية تسليم تتيح مصادقة مصدر مورد بشكل مستقل عن كيفية تسليمه. يمكن أن يؤدي تنفيذ آلية SXG إلى تحسين سرعة عرض أكبر محتوى مرئي (LCP) من خلال تفعيل الجلب المُسبَق من مصادر متعددة للحفاظ على الخصوصية. بالإضافة إلى ذلك، يعمل إلغاء الاقتران على تطوير مجموعة متنوعة من حالات الاستخدام، مثل تجارب الإنترنت بلا اتصال بالإنترنت والعرض من ذاكرات التخزين المؤقت التابعة لجهات خارجية.

تقدّم هذه المقالة نظرة عامة شاملة على آلية عمل SXG وحالات الاستخدام والأدوات.

توافُق المتصفح

متوافق مع SXG من خلال المتصفحات المستندة إلى Chromium (بدءًا من الإصدارات: Chrome 73 وEdge 79 وOpera 64).

نظرة عامة

كحالة الاستخدام الأساسية، تستخدم آلية SXG ذاكرة التخزين المؤقت لجلب المحتوى الذي تم توقيعه بطريقة مشفّرة من خلال المصدر وعرضه. ويساعد ذلك في تسريع عمليات التنقّل من مصادر متعددة من مواقع الجهات المرجعية مع ضمان بقاء الصفحات بدون أي تعديل وأن يتم نسبها إلى مصدرها بشكل صحيح. يتم إخفاء أي معلومات يُحتمَل أن تحدّد الهوية إلى أن ينتقل المستخدم إلى الموقع الإلكتروني وبالتالي حماية خصوصية المستخدم. يستخدم محرّك بحث Google في مرحلة مبكرة إمكانات الجلب المسبق لملفات SXG. وبالنسبة إلى المواقع الإلكترونية التي تتلقّى جزءًا كبيرًا من عدد الزيارات من "بحث Google"، يمكن أن تكون آلية SXG أداة مهمة لتحميل الصفحات بشكل أسرع على المستخدمين. ونأمل أن يتسع هذا التأثير بمرور الوقت ليشمل مُحيلين إضافيين.

آلية العمل

يقوم الموقع بتوقيع زوج طلب/استجابة ("تبادل HTTP") بطريقة تتيح المتصفح للتحقق من مصدر المحتوى وسلامته بشكل مستقل عن وكيف تم توزيع المحتوى. وبالتالي، قد يعرض المتصفح عنوان URL الموقع الأصلي في شريط العناوين، بدلاً من عنوان URL للخادم الذي بتسليم المحتوى.

مخطّط يوضّح آلية عمل آلية Signed Exchange. اتصال المتصفّح بذاكرة التخزين المؤقت التي تتصل بموقع الوجهة

تاريخيًا، كانت الطريقة الوحيدة استخدام طرف ثالث لتوزيع المحتوى مع الحفاظ على هو أن يشارك الموقع الإلكتروني شهادات طبقة المقابس الآمنة (SSL) مع الموزّع. ينطوي هذا على عيوب أمنية. علاوة على ذلك، فهو بعيد عن مما يجعل المحتوى قابلاً للنقل حقًا.

تنسيق SXG

يتم تغليف SXG في ملف بترميز ثنائي يحتوي على المكونات الأساسية وهي: تبادل HTTP التوقيع الذي يغطي التبادل. يتألف تبادل HTTP من عنوان URL للطلب أو محتوى ومعلومات التفاوض، واستجابة HTTP.

في ما يلي مثال على ملف SXG تم فك ترميزه.

format version: 1b3
request:
  method: GET
  uri: https://example.org/
  headers:
response:
  status: 200
  headers:
    Cache-Control: max-age=604800
    Digest: mi-sha256-03=kcwVP6aOwYmA/j9JbUU0GbuiZdnjaBVB/1ag6miNUMY=
    Expires: Mon, 24 Aug 2020 16:08:24 GMT
    Content-Type: text/html; charset=UTF-8
    Content-Encoding: mi-sha256-03
    Date: Mon, 17 Aug 2020 16:08:24 GMT
    Vary: Accept-Encoding
signature:
    label;cert-sha256=<em>ViFgi0WfQ+NotPJf8PBo2T5dEuZ13NdZefPybXq/HhE=</em>;
    cert-url=&quot;https://test.web.app/ViFgi0WfQ-NotPJf8PBo2T5dEuZ13NdZefPybXq_HhE&quot;;
    date=1597680503;expires=1598285303;integrity=&quot;digest/mi-sha256-03&quot;;sig=<em>MEUCIQD5VqojZ1ujXXQaBt1CPKgJxuJTvFlIGLgkyNkC6d7LdAIgQUQ8lC4eaoxBjcVNKLrbS9kRMoCHKG67MweqNXy6wJg=</em>;
    validity-url=&quot;https://example.org/webpkg/validity&quot;
header integrity: sha256-Gl9bFHnNvHppKsv+bFEZwlYbbJ4vyf4MnaMMvTitTGQ=</p>

<p>The exchange has a valid signature.
payload [1256 bytes]:</p>
<pre class="prettyprint"><code>&lt;title&gt;SXG example&lt;/title&gt;
&lt;meta charset=&#34;utf-8&#34;&gt;
&lt;meta http-equiv=&#34;Content-type&#34; content=&#34;text/html; charset=utf-8&#34;&gt;
&lt;style type=&#34;text/css&#34;&gt;
body {
    background-color: #f0f0f2;
    margin: 0;
    padding: 0;
}
&lt;/style&gt;
</code></pre>
<div>
    <h1>Hello</h1>
</div>

<p>

تشير المَعلمة expires في التوقيع إلى تاريخ انتهاء صلاحية SXG. حاسمة قد تكون آلية SXG صالحة لمدة 7 أيام على الأكثر. تعرّف على مزيد من المعلومات عن رأس التوقيع في قسم Signed HTTP Exchanges المواصفات.

إتاحة التخصيص من جهة الخادم

سيتم عرض ملف SXG الذي يحتوي على عنوان Vary: Cookie فقط للمستخدمين الذين لا يظهرون لهم تحتوي على ملفات تعريف ارتباط لعنوان URL للطلب الموقَّع. إذا كان موقعك الإلكتروني يعرض محتوى HTML مختلفًا إلى المستخدمين المسجّلين الدخول، يمكنك استخدام هذه الميزة للاستفادة من آلية SXG بدون تغيير تلك التجربة. الاطّلاع على تفاصيل عن التخصيص من جهة الخادم باستخدام آلية SXG الديناميكية

حزم الويب

تشكّل آلية SXG جزءًا من نطاق الويب الأوسع نطاقًا مجموعة اقتراحات مواصفات التغليف بالإضافة إلى ذلك إلى SXG، فإن المكوّن الرئيسي الآخر من مواصفات حزم الويب هو حزمات الويب ("عمليات تبادل HTTP المجمّعة"). حزم الويب هي مجموعة من موارد HTTP بيانات التعريف اللازمة لتفسير الحزمة.

وتُعد العلاقة بين آلية SXG وحِزم الويب نقطة شائعة من الالتباس. إنّ SXG وحزم الويب هما نوعان من التكنولوجيات المختلفة لا تعتمدان على كل واحدة منهما. غير ذلك — يمكن استخدام حزم الويب مع كل من تبادلات التوقيع وغير الموقَّعة. من الشائع والذي طوّرته SXG وحزم الويب، هو إنشاء "حزمة ويب" يسمح بمشاركة المواقع بالكامل للاستهلاك بلا اتصال بالإنترنت.

تسريع عمليات تحميل الصفحات باستخدام Signed Exchange

يساعد تفعيل Signed Exchange في تسريع أداء صفحات الويب، ما يؤثر بدوره في مؤشرات Core Web Vitals الخاصة بموقعك الإلكتروني في سرعة عرض أكبر محتوى مرئي (LCP) محددة. في مرحلة مبكرة من استخدام محرّك بحث Google، يستخدم محرّك بحث Google آلية SXG لتوفير تجربة تحميل أسرع للصفحات التي يتم تحميلها من صفحة نتائج البحث.

يزحف محرّك بحث Google إلى ملفات SXG ويخزّنها مؤقتًا عندما يكون متاحًا، ويجلب مسبقًا ملفات SXG التي من المرجّح أن يزورها المستخدم، مثل الصفحة المقابلة لنتيجة البحث الأولى.

وتعمل آلية SXG بشكلٍ أفضل جنبًا إلى جنب مع تحسينات الأداء الأخرى مثل استخدام شبكات توصيل المحتوى (CDN) وتقليل الموارد الفرعية التي تحظر العرض. بعد التنفيذ، اتّبِع هذه الاقتراحات للاستفادة إلى أقصى حدّ من سرعة عرض أكبر محتوى مرئي (LCP) من جلب ملفات SXG مُسبقًا. في كثير من الحالات، قد يؤدي هذا التحسين إلى حدوث عمليات تحميل شبه فورية للصفحات من "بحث Google":

تأثير Signed Exchange

من التجارب السابقة، لاحظنا انخفاضًا في سرعة عرض أكبر محتوى مرئي (LCP) نتيجة عمليات الجلب المُسبَق التي تستخدم SXG يتراوح بين 300 و400 ملي ثانية. يساعد ذلك المواقع الإلكترونية في تحقيق الانطباع الأول لدى المستخدمين بشكل أفضل، وغالبًا ما يكون له تأثير إيجابي على مقاييس النشاط التجاري.

لقد استفادت العديد من العلامات التجارية والمواقع العالمية من Signed Exchange. في دراسة حالة، لنتعرّف على كيفية استفادة RebelMouse، وهو نظام لإدارة المحتوى (CMS) البارز، من تنفيذ Signed Exchange، في تحسين تجربة عملائها مقاييس الأداء والأعمال:

  • شركة Narcity تمكّنت من تحسين سرعة عرض أكبر جزء من المحتوى على الصفحة (LCP) بنسبة%41
  • شهدت مجلة Paper Magazine زيادة بنسبة 27% في عدد الجلسات لكل مستخدم
  • مدونة MLT خفّضت وقت تحميل الصفحة بنسبة 21%

اكتشفت Cloudflare أنّ SXG حسّنت مقياس TFB على% 98 من المواقع الإلكترونية التي اختبرتها، وحسّنت سرعة عرض أكبر محتوى مرئي (LCP) لنسبة% 85 من المواقع الإلكترونية، مع تحسّن متوسط بأكثر من% 20 في عمليات تحميل الصفحات المؤهَّلة لاستخدام SXG.

الفهرسة

لا يتم ترتيب أو فهرسة تمثيلات SXG وغير SXG الخاصة بالصفحة. بشكل مختلف عن طريق بحث Google. وتشكّل SXG آلية تسليم في النهاية، وليس من المفترض تغيير المحتوى الأساسي.

AMP

يمكن عرض محتوى AMP باستخدام SXG. تسمح آلية SXG بجلب محتوى AMP مسبقًا. وعرضها باستخدام عنوان URL الأساسي، بدلاً من أن تكون لصفحة AMP URL.AMP أداة لإنشاء ملفات SXG.تعرّف على كيفية عرض صفحات AMP باستخدام Signed Exchange على amp.dev.

تصحيح أخطاء SXG باستخدام "أدوات مطوري البرامج في Chrome"

للاطّلاع على SXG مباشرةً، استخدِم متصفّح Chromium وافتح "أدوات مطوري البرامج" وافتح لوحة "الشبكة"، ثم انتقِل إلى مثال صفحة البحث. يمكن تحديد Signed Exchange من خلال البحث عن signed-exchange في عمود النوع.

لقطة شاشة تعرض طلب SXG ضمن &quot;الشبكة&quot; لوحة في &quot;أدوات مطوري البرامج&quot;
لوحة الشبكة في "أدوات مطوري البرامج"

توفّر علامة التبويب Preview (معاينة) مزيدًا من المعلومات عن محتوى SXG.

لقطة شاشة للمعاينة علامة التبويب الخاصة بآلية SXG
علامة التبويب معاينة في "أدوات مطوري البرامج"

الأدوات

يتضمّن تنفيذ آلية SXG إنشاء ملف SXG المقابل لعنوان URL معيّن. ثم عرض SXG على مقدّمي الطلبات (برامج الزحف عادةً).

الشهادات

لإنشاء SXG، ستحتاج إلى شهادة يمكنها توقيع ملفات SXG، على الرغم من أنّ بعض الأدوات تحصل عليها تلقائيًا. هذه الصفحة تعرض المراجع المصدقة التي يمكنها إصدار هذا النوع من الشهادات. يمكن الحصول على الشهادات تلقائيًا من هيئة إصدار الشهادات من Google باستخدام أي برنامج ACME. يحتوي خادم Web Packager Server على برنامج ACME مضمّن، وستتوافق مع sxg-rs قريبًا.

أدوات SXG الخاصة بالأنظمة الأساسية

وتدعم هذه الأدوات حِزم تكنولوجيا معيّنة. إذا كنت تستخدم والمنصة التي تدعمها إحدى هذه الأدوات، فقد تجد أن إعدادها أسهل من أداة للأغراض العامة.

أدوات SXG لأغراض عامة

خادم HTTP sxg-rs

يعمل sxg-rs http_server يعمل كوكيل عكسي تعرض عناصر SXG. بالنسبة إلى الطلبات الواردة من برامج زحف SXG، سيوقِّع http_server على الرد من الخلفية والرد باستخدام SXG. للتثبيت التعليمات، فراجع الملف التمهيدي.

خادم Web Packager

حزمة الويب الخادم، webpkgserver، هو بديل لـ sxg-rs http_server، وتتم كتابته في Go. بالنسبة إرشادات حول إعداد خادم Web Packager، راجع كيفية إعداد خادم Packager التبادل باستخدام Web Packager.

واجهة سطر الأوامر في أداة Web Packager

ينشئ Web Packager CLI ملف SXG. بشكل مطابق لعنوان URL محدد.

webpackager \
    --private\_key=private.key \
    --cert\_url=https://example.com/certificate.cbor \
    --url=https://example.com

بعد إنشاء ملف SXG، حمِّله على خادمك واعرضه باستخدام نوع MIME application/signed-exchange;v=b3. بالإضافة إلى ذلك، ستحتاج إلى عرض شهادة SXG على أنّها application/cert-chain+cbor.

مكتبات SXG

يمكن استخدام هذه المكتبات لإنشاء منشئ SXG الخاص بك:

  • sxg_rs هي مكتبة Rust إنشاء عناصر SXG. وهي مكتبة SXG الأكثر تميزًا وتستخدم أساس الأداتين cloudflare_worker وfastly_compute.

  • libsxg هي الحد الأدنى من مكتبة C إنشاء عناصر SXG. ويتم استخدامه كأساس لوحدة NGINX SXG فلتر SXG على Envoy.

  • go/signed-exchange هي الحد الأدنى من مكتبة Go المتوفرة من خلال مواصفات حزمة الويب المرجع وتنفيذ إنشاء عناصر SXG. ويتم استخدامه كأساس لأداة CLI المرجعية gen-signedexchange والأدوات الأكثر تميزًا في Web Packager.

التفاوض على المحتوى

يجب أن تعرض الخوادم SXG عندما يشير الرأس "قبول" إلى أن قيمة q للتطبيق/Signed-Exchange أكبر من أو تساوي قيمة q للنص/html. من الناحية العملية، يعني هذا أنّ خادم المصدر سيعرض SXG لبرامج الزحف وليس المتصفّحات. وتُجري العديد من الأدوات المذكورة أعلاه هذا الإجراء بشكلٍ تلقائي، ولكن بالنسبة إلى الأدوات الأخرى، يمكن استخدام التعبير العادي التالي لمطابقة رأس "قبول" للطلبات التي يجب عرضها كملف SXG: http Accept: /(^|,)\s\*application\/signed-exchange\s\*;\s\*v=[[:alnum:]\_-]+\s\*(,|$)/

يتضمّن هذا الاقتراح أمثلة على Apache وnginx.

تحديث واجهة برمجة التطبيقات لذاكرة التخزين المؤقت

تحتوي ذاكرة التخزين المؤقت الخاصة بخدمة SXG من Google على واجهة برمجة تطبيقات يمكن لمالكي المواقع الإلكترونية استخدامها لإزالة ملفات SXG من ذاكرة التخزين المؤقت قبل انتهاء صلاحيتها بسبب Cache-Control: max-age. يمكنك الاطّلاع على مرجع update cache API API لمعرفة التفاصيل.

الربط بميزة SXG

يمكن لأي موقع إلكتروني تخزين ملفات SXG مؤقتًا وعرضها وجلبها مسبقًا، متى كان ذلك متاحًا، باستخدام العلامتَين و : html <a href="https://example.com/article.html.sxg"> <link rel="prefetch" as="document" href="https://example.com/article.html.sxg"> هذه المقالة توضّح كيفية استخدام nginx لتوزيع SXG.

المزايا الفريدة

SXG هي إحدى التكنولوجيات المتعددة المحتملة لتفعيل الجلب المسبق من مصادر متعددة. عند اختيار التكنولوجيا التي تريد استخدامها، قد تحتاج إلى المفاضلة بين تحسين جوانب مختلفة. توضّح الأقسام التالية بعض القيم الفريدة التي توفرها SXG في مساحة الحلول الممكنة. قد تتغير هذه العوامل بمرور الوقت مع تطور مساحة الحلول المتاحة.

انخفاض عدد الطلبات لعرض الإعلانات

قد يحتاج الخادم إلى عرض طلبات إضافية باستخدام ميزة "الجلب المسبق عبر المواقع الإلكترونية". يتوافق ذلك مع الحالات التي تم فيها جلب الصفحة مُسبقًا، ولكن لم يزور المستخدم الصفحة أو تعذَّر عرض وحدات البايت التي تم جلبها مسبقًا للمستخدم. بالنسبة إلى آلية SXG، يمكن تقليل هذه الطلبات الإضافية غير المستخدَمة بشكل كبير:

  • يتم تخزين ملفات SXG مؤقتًا وقد يتم إرسالها إلى المستخدمين إلى أن تنتهي صلاحيتها. وبالتالي، يمكن التعامل مع العديد من عمليات الجلب المُسبَق بواسطة خادم ذاكرة التخزين المؤقت فقط.
  • ويمكن عرض ملفات SXG للمستخدمين باستخدام ملفات تعريف الارتباط أو بدونها على موقعك الإلكتروني. وبالتالي، ستقل الحالات التي ستحتاج فيها إلى جلب الصفحة مرة أخرى بعد التنقّل.

تحسين سرعة الصفحة

قد تلاحظ تحسنًا إضافيًا في سرعة الصفحة بسبب مساحات عرض الجلب المُسبَق والإمكانيات التي تتيحها حاليًا:

  • يمكن عرض ملفات SXG للمستخدمين الذين لديهم ملفات تعريف ارتباط لموقعك الإلكتروني.
  • تجلب SXG أيضًا الموارد الفرعية لصفحاتك مسبقًا، مثل JavaScript وCSS والخطوط والصور، عند تحديدها باستخدام عنوان Link.
  • قريبًا، ستتوفّر ميزة الجلب المُسبَق من SXG من "بحث Google" في المزيد من أنواع نتائج البحث.

الخاتمة

Signed Exchange هي آلية تسليم تتيح التحقق من أصل وصلاحية مورد بغض النظر عن كيفية توزيعه تسليمه. ونتيجةً لذلك، يمكن توزيع ملفات SXG من خلال أطراف ثالثة الحفاظ على إحالة الناشر بالكامل.

محتوى إضافي للقراءة