آلية 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، وذلك لتوفير تجربة تحميل أسرع للصفحات للمستخدمين. نأمل أن يشمل هذا التأثير المزيد من المُحيلِين بمرور الوقت.

آلية العمل

يوقّع الموقع الإلكتروني زوج طلب/استجابة (يُعرف باسم "مبادلة 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

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

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

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

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

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

استفادت العديد من العلامات التجارية والمواقع الإلكترونية العالمية من ميزة "التبادل الموقَّع". في ما يلي دراسة حالة حول كيفية مساعدة ميزة "التبادل الموقَّع" في تحسين أداء عملاء RebelMouse، وهو نظام إدارة محتوى بارز، ومقاييس نشاطهم التجاري:

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

تبيّن لشركة Cloudflare أنّ آلية SXG حسّنت وقت استجابة خادم ‎TTFB بنسبة% 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

يعمل sxg-rs http_server بمثابة خادم وكيل عكسي ل عرض ملفات 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 مع الحفاظ على الإسناد الكامل للناشر.

مراجع إضافية