آلية Signed Exchange (SXG)

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

Katie Hempenius
Katie Hempenius
Devin Mullins
Devin Mullins

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

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

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

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

نظرة عامة

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

آلية العمل

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

مخطّط بياني يوضّح آلية عمل "عمليات التبادل الموقَّعة" المتصفّح يتواصل مع ذاكرة التخزين المؤقت التي تتواصل مع الموقع الإلكتروني المقصود

في السابق، كانت الطريقة الوحيدة التي يمكن من خلالها لموقع الإلكتروني استخدام جهة خارجية لتوزيع محتواه مع الحفاظ على نسبة المصدر هي مشاركة الموقع الإلكتروني لشهادات بروتوكول 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 أيام كحد أقصى. يمكنك الاطّلاع على مزيد من المعلومات حول رأس التوقيع في مواصفات عمليات تبادل HTTP الموقَّعة .

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

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

حزم الويب

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

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

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

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

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

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

تأثير تنسيقات Signed Exchange

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

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

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

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

الفهرسة

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

AMP

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

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

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

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

تقدّم علامة التبويب المعاينة مزيدًا من المعلومات عن محتوى ملف SXG.

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

الأدوات

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

الشهادات

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

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

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

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

خادم HTTP sxg-rs

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

خادم Web Packager

Web Packager Server، webpkgserver، هو بديل لخدمة http_server في sxg-rs، وهي مكتوبة بلغة Go. للحصول على تعليمات حول إعداد Web Packager server، يمكنك الاطّلاع على كيفية إعداد عملية التبادل الموقَّع باستخدام Web Packager.

واجهة سطر أوامر Web Packager

تُنشئ واجهة برمجة التطبيقات Web Packager ملف SXG متوافقًا مع عنوان URL معيّن.

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

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

مكتبات SXG

يمكن استخدام هذه المكتبات لإنشاء أداة إنشاء SXG بنفسك:

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

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

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

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

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

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

واجهة برمجة التطبيقات Update cache

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

الربط بآلية 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" لمزيد من أنواع نتائج البحث.

الخاتمة

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

مراجع إضافية