SXG هي آلية تسليم تتيح إمكانية مصادقة مصدر المورد بشكل مستقل عن طريقة تسليمه.
تنسيقات Signed Exchange (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 أيام على الأكثر. يمكنك العثور على مزيد من المعلومات حول عنوان التوقيع في مواصفات Signed HTTP Exchange.
توفير إمكانية التخصيص من جهة الخادم
لن يتم عرض آلية SXG تتضمّن عنوان Vary: Cookie
إلا للمستخدمين الذين لا تتوفّر لديهم
ملفات تعريف ارتباط لعنوان URL للطلب الموقَّع. إذا كان موقعك الإلكتروني يعرض ترميز HTML مختلفًا للمستخدمين الذين سجّلوا دخولهم، يمكنك استخدام هذه الميزة للاستفادة من SXG بدون تغيير هذه التجربة. اطّلِع على تفاصيل حول التخصيص من جهة الخادم
باستخدام SXG الديناميكي.
حزمة الويب
SXG هي جزء من مجموعة مقترحات مواصفات Web Packaging الأوسع نطاقًا. بالإضافة إلى SXG، إنّ المكوِّن الرئيسي الآخر لمواصفات Web Packaging هو حزم الويب ("تبادلات HTTP المجمّعة"). حزم الويب هي مجموعة من موارد HTTP والبيانات الوصفية اللازمة لتفسير الحزمة.
إنّ العلاقة بين آلية SXG وحِزم الويب هي نقطة ارتباك شائعة. SXG وحِزم الويب هما تقنيتان مختلفتان لا يعتمدان على بعضهما البعض، إذ يمكن استخدام حِزم الويب مع تبادلَي البيانات الموقَّع وغير الموقَّع. من الأهداف الشائعة التي تطوّرها كل من SXG وحِزم الويب إنشاء تنسيق "حزم ويب" يسمح بمشاركة المواقع الإلكترونية بالكامل لمشاهدتها بلا اتصال بالإنترنت.
تسريع عمليات تحميل الصفحات باستخدام آلية Signed Exchange
يمكن أن يساعد تفعيل آلية Signed Exchange على زيادة سرعة أداء صفحة الويب، وبالتالي التأثير في "مؤشرات أداء الويب الأساسية" لموقعك الإلكتروني، بخاصّة سرعة عرض أكبر محتوى مرئي (LCP). يستخدم "بحث Google" آلية SXG التي كانت من أوائل المستخدمين لتجربة SXG في تحميل الصفحة بشكل أسرع، وذلك في ما يتعلق بالصفحات التي يتم تحميلها من صفحة نتائج البحث.
يزحف "بحث Google" إلى ملفات SXG التي يُرجّح أن يزورها المستخدم ويخزّنها مؤقتًا عند توفّرها ويجلبها مسبقًا، مثل الصفحة المقابلة لنتيجة البحث الأولى.
تعمل آلية SXG بشكل أفضل إلى جانب تحسينات الأداء الأخرى، مثل استخدام شبكات توصيل المحتوى (CDN) وتقليل الموارد الفرعية لحظر العرض. بعد التنفيذ، اتّبِع هذه الاقتراحات للاستفادة إلى أقصى حد من سرعة عرض أكبر جزء من المحتوى على الصفحة (LCP) من الجلب المُسبَق لملفات SXG. في كثير من الحالات، يمكن أن يؤدي هذا التحسين إلى تحميل الصفحات بشكل فوري تقريبًا من "بحث Google":
تأثير عمليات Signed Exchange
استنادًا إلى التجارب السابقة، لاحظنا انخفاضًا في متوسط سرعة عرض أكبر محتوى مرئي (LCP) يتراوح بين 300 و400 ملي ثانية في المتوسط بفضل عمليات الجلب المُسبَق التي تستخدم آلية SXG. يساعد هذا الأمر المواقع الإلكترونية في ترك انطباع أول أفضل لدى المستخدمين، وغالبًا ما يكون له تأثير إيجابي على مقاييس النشاط التجاري.
استفادت العديد من العلامات التجارية والمواقع العالمية من Signed Exchange. في دراسة حالة، لنلقِ نظرة على الطريقة التي ساعد بها تطبيق Signed Exchange RebelMouse، وهو نظام بارز لإدارة المحتوى (CMS)، في تحسين أداء عملائهم ومقاييس النشاط التجاري:
- حقّقت قناة Narcity زيادة في سرعة عرض أكبر جزء من المحتوى على الصفحة (LCP) بنسبة%41
- لاحظت Paper Magazine زيادة 27% في عدد الجلسات لكل مستخدم
- انخفضت وقت تحميل الصفحة في مدونة MLT بنسبة 21%
وجدت Cloudflare أنّ SXG حسّنت تقنية TTFB في% 98 من المواقع الإلكترونية التي اختبرتها، وحسّنت سرعة عرض أكبر جزء من المحتوى على الصفحة (LCP) في% 85 من المواقع الإلكترونية، مع تحسُّن متوسط بنسبة تتجاوز% 20 في عمليات تحميل الصفحات المؤهّلة لاستخدام آلية SXG.
الفهرسة
لا يتم ترتيب الصفحات عن طريق SXG وغير SXG مقارنةً بتمثيلها من قِبل SXG، ولا يتم فهرستها بشكل مختلف من قِبل "بحث Google". تُعدّ SXG آلية تسليم لا تغيّر المحتوى الأساسي.
AMP
يمكن إرسال محتوى AMP باستخدام SXG. تسمح آلية SXG بجلب محتوى AMP مسبقًا وعرضه باستخدام عنوان URL الأساسي بدلاً من عنوان URL لصفحة AMP.تحتوي AMP على أدوات منفصلة خاصة بها لإنشاء SXG.تعرَّف على كيفية عرض صفحات AMP باستخدام Signed Exchange على amp.dev.
تصحيح أخطاء SXG باستخدام "أدوات مطوري البرامج في Chrome"
للاطّلاع على آلية SXG مباشرةً، يمكنك استخدام متصفّح Chromium وفتح "أدوات مطوّري البرامج" وفتح لوحة "الشبكة" والانتقال إلى نموذج صفحة البحث هذا. يمكن التعرّف على آلية Signed Exchange من خلال البحث عن signed-exchange
في العمود النوع.
![لقطة شاشة تعرض طلب SXG ضمن لوحة "الشبكة" في "أدوات مطوري البرامج"](https://web.dev/static/articles/signed-exchanges/image/screenshot-showing-sxg-r-9a4f9df2440b3.png?authuser=6&hl=ar)
توفّر علامة التبويب معاينة مزيدًا من المعلومات حول محتوى ملف SXG.
![لقطة شاشة لعلامة التبويب "Preview" (معاينة) SXG](https://web.dev/static/articles/signed-exchanges/image/screenshot-the-preview-033e1253a3e1.png?authuser=6&hl=ar)
الأدوات
يؤدي تنفيذ آلية SXG إلى إنشاء آلية SXG المقابلة لعنوان URL محدّد، ثم عرض آلية SXG هذه إلى مقدِّمي الطلبات (عادةً برامج الزحف).
الشهادات
لإنشاء آلية SXG، يجب الحصول على شهادة يمكنها توقيع ملفات SXG، على الرغم من أن بعض الأدوات تحصل عليها تلقائيًا. تعرض هذه الصفحة المراجع المصدقة التي يمكنها إصدار هذا النوع من الشهادات. يمكن الحصول على الشهادات تلقائيًا من مرجع تصديق Google باستخدام أي برنامج ACME. يحتوي خادم Web Packager على برنامج ACME مضمّن، وسيتوفّر sxg-rs قريبًا.
أدوات SXG الخاصة بالنظام الأساسي
تتوافق هذه الأدوات مع حِزم تكنولوجية معيّنة. إذا كنت تستخدم بالفعل منصة تدعمها إحدى هذه الأدوات، فقد تجد أنه من الأسهل إعدادًا بدلاً من استخدام أداة للأغراض العامة.
تعمل
sxg-rs/cloudflare_worker
على Cloudflare Workers.يتم تشغيل
sxg-rs/fastly_compute
على Fastly Compute@Edge.عمليات Signed Exchange هي ميزة في Cloudflare تحصل على الشهادات تلقائيًا وتنشئ Signed Exchange.
تنشئ وحدة NGINX SXG ملفات SXG وتعرضها للمواقع الإلكترونية التي تستخدم nginx. يمكن الاطّلاع على تعليمات الإعداد هنا.
يعمل Envoy SXG Filter على إنشاء SXG وعرضها على المواقع الإلكترونية التي تستخدم Envoy.
أدوات SXG للأغراض العامة
خادم HTTP sxg-rs
يعمل sxg-rs
http_server
كخادم وكيل عكسي
لعرض SXG. بالنسبة إلى الطلبات الواردة من برامج زحف SXG، سيوقّع http_server
على الردود من الخلفية ويردّ باستخدام SXG. للحصول على تعليمات التثبيت،
يُرجى الاطّلاع على ملف التعليمات.
خادم Web Packager
ويعتبر خادم Web Packager،
webpkgserver
، بديلاً لـ sxg-rs http_server، المكتوب في Go. للحصول على تعليمات حول إعداد خادم Web Packager، يمكنك الاطّلاع على كيفية إعداد عمليات Signed Exchange باستخدام 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، يمكنك تحميله إلى الخادم وعرضه باستخدام application/signed-exchange;v=b3
من النوع MIME. بالإضافة إلى ذلك، ستحتاج إلى
تقديم شهادة SXG باسم application/cert-chain+cbor
.
مكتبات SXG
ويمكن استخدام هذه المكتبات لإنشاء منشئ SXG الخاص بك:
sxg_rs
هي مكتبة غير صالحة لإنشاء ملفات 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-value للتطبيق/Signed-Exchange أكبر من أو تساوي القيمة q-value للنص/html. ومن الناحية العملية، يعني هذا أنّ خادم المصدر سيعرض SXG لبرامج الزحف، وليس للمتصفحات. تُجري العديد من الأدوات المذكورة أعلاه ذلك تلقائيًا، ولكن بالنسبة إلى الأدوات الأخرى، يمكن استخدام التعبير العادي التالي لمطابقة العنوان "قبول" للطلبات التي يجب عرضها كـ SXG:
http
Accept: /(^|,)\s\*application\/signed-exchange\s\*;\s\*v=[[:alnum:]\_-]+\s\*(,|$)/
يتضمّن هذا الاقتراح أمثلة على Apache وnginx.
تحديث واجهة برمجة التطبيقات لذاكرة التخزين المؤقت
تتضمّن ذاكرة التخزين المؤقت الخاصة بخدمة 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" على المزيد من أنواع نتائج البحث.
الخلاصة
آلية Signed Exchange هي آلية تسليم تتيح إمكانية التحقّق من مصدر وصلاحيته بشكل مستقل عن طريقة تسليم المورد. ونتيجةً لذلك، يمكن لجهات خارجية توزيع آلية SXG مع الحفاظ على اكتمال عملية تحديد المصدر من قِبل الناشر.