SXG هي آلية تسليم تتيح مصادقة مصدر المورد بغض النظر عن كيفية تسليمه.
عمليات التبادل الموقَّعة (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.
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="https://test.web.app/ViFgi0WfQ-NotPJf8PBo2T5dEuZ13NdZefPybXq_HhE"; date=1597680503;expires=1598285303;integrity="digest/mi-sha256-03";sig=<em>MEUCIQD5VqojZ1ujXXQaBt1CPKgJxuJTvFlIGLgkyNkC6d7LdAIgQUQ8lC4eaoxBjcVNKLrbS9kRMoCHKG67MweqNXy6wJg=</em>; validity-url="https://example.org/webpkg/validity" header integrity: sha256-Gl9bFHnNvHppKsv+bFEZwlYbbJ4vyf4MnaMMvTitTGQ=</p> <p>The exchange has a valid signature. payload [1256 bytes]:</p> <pre class="prettyprint"><code><title>SXG example</title> <meta charset="utf-8"> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <style type="text/css"> body { background-color: #f0f0f2; margin: 0; padding: 0; } </style> </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.
الأدوات
ويشمل تنفيذ آلية SXG إنشاء ملف SXG المقابل لعنوان URL معيّن، ثم عرض ملف SXG هذا على مقدّمي الطلبات (برامج الزحف عادةً).
الشهادات
لإنشاء SXG، ستحتاج إلى شهادة يمكنها توقيع ملفات SXG، على الرغم من أنّ بعض الأدوات تحصل عليها تلقائيًا. تعرِض هذه الصفحة مراجع التصديق التي يمكنها إصدار هذا النوع من الشهادات. يمكن الحصول على الشهادات تلقائيًا من مرجع تصديق Google باستخدام أي برنامج ACME. يحتوي Web Packager Server على برنامج ACME مضمّن، وسيتوفّر قريبًا في sxg-rs.
أدوات SXG الخاصة بالمنصة
تتوافق هذه الأدوات مع مجموعات تكنولوجيا معيّنة. إذا كنت تستخدِم حاليًا منصّة متوافقة مع إحدى هذه الأدوات، قد يكون من الأسهل إعدادها مقارنةً بأحد الأدوات المخصّصة للأغراض العامة.
يتم تشغيل
sxg-rs/cloudflare_worker
على Cloudflare Workers.يتم تشغيل
sxg-rs/fastly_compute
على Fastly Compute@Edge.عمليات التبادل الموقَّعة التلقائية هي ميزة في Cloudflare تحصل تلقائيًا على الشهادات وتُنشئ عمليات التبادل الموقَّعة.
تنشئ وحدة NGINX SXG ملفات SXG وتعرضها للمواقع الإلكترونية التي تستخدم nginx. يمكن الاطّلاع على تعليمات الإعداد هنا.
يُنشئ فلتر ملف SXG في Envoy ملفّات SXG ويعرضها للمواقع الإلكترونية التي تستخدِم Envoy.
أدوات 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 مع الحفاظ على الإسناد الكامل للناشر.