وآلية 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 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
في عمود النوع.
توفّر علامة التبويب Preview (معاينة) مزيدًا من المعلومات عن محتوى SXG.
الأدوات
يتضمّن تنفيذ آلية SXG إنشاء ملف SXG المقابل لعنوان URL معيّن. ثم عرض SXG على مقدّمي الطلبات (برامج الزحف عادةً).
الشهادات
لإنشاء SXG، ستحتاج إلى شهادة يمكنها توقيع ملفات SXG، على الرغم من أنّ بعض الأدوات تحصل عليها تلقائيًا. هذه الصفحة تعرض المراجع المصدقة التي يمكنها إصدار هذا النوع من الشهادات. يمكن الحصول على الشهادات تلقائيًا من هيئة إصدار الشهادات من Google باستخدام أي برنامج ACME. يحتوي خادم Web Packager Server على برنامج ACME مضمّن، وستتوافق مع sxg-rs قريبًا.
أدوات SXG الخاصة بالأنظمة الأساسية
وتدعم هذه الأدوات حِزم تكنولوجيا معيّنة. إذا كنت تستخدم والمنصة التي تدعمها إحدى هذه الأدوات، فقد تجد أن إعدادها أسهل من أداة للأغراض العامة.
sxg-rs/fastly_compute
يعمل على Fastly Compute@Edgeتوقيع تلقائي سوق الأوراق المالية هي ميزة Cloudflare التي تحصل تلقائيًا على الشهادات وتنشئ Signed Exchange.
تُنشئ وحدة NGINX SXG وعرض ملفات SXG للمواقع الإلكترونية التي تستخدم nginx ضبط إعدادات الجهاز يمكن العثور على التعليمات هنا.
Envoy SXG الفلترة ملفات SXG وعرضها للمواقع الإلكترونية التي تستخدم Envoy.
أدوات 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 من خلال أطراف ثالثة الحفاظ على إحالة الناشر بالكامل.