AMP

خدمة AMP باستخدام التبادلات الموقّعة

توفر AMP مزايا سرعة تتجاوز التنسيق من خلال تقنيات مثل التخزين المؤقت والتحميل المُسبق. يمكن أن يكون لهذه المزايا جوانب سلبية مثل عناوين URL الإضافية التي يتم عرضها عند التضمين داخل عارض AMP. من خلال تقديم محتوى AMP باستخدام التبادلات الموقّعة، يمكنك استخدام ميزة "منصة الويب" الجديدة للتغلب على كل ذلك.

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

يتم تسليم محتوى AMP الموقّع بالإضافة إلى (بدلاً من) محتوى AMP العادي.

يتم دعم هذه الميزة حاليًا على Chrome، ولكن هناك خطط موضوعة للتنفيذ على متصفحات إضافية.

هل ستعمل التبادلات الموقّعة معي؟

لتنفيذ التبادلات الموقّعة، يجب أن تستوفي المتطلبات التالية:

  • القدرة على تكوين عناوين HTTP التي تم إنشاؤها بواسطة الخادم الخاص بك والتحكم فيها. (معظم حلول الاستضافة المستندة إلى الويب البحتة مثل Blogger غير متوافقة مع التبادلات الموقّعة.)
  • القدرة على إنشاء تبادلات AMP موقّعة، مثل تشغيل خادم amppackager{/ code1}، على أنه Go binary، أو داخل Docker VM.
  • يجب تحديث أداة إنشاء الحِزم كل ستة أسابيع.
  • القدرة على التنوع ugn رؤوس Accept وAMP-Cache-Transform على خوادم HTTP، وإرجاع محتوى مختلف لعنوان URL نفسه.
  • يحتاج النظام الذي يقوم بتشغيل amppackager إلى أن يكون قادرًا على إرسال طلبات الشبكة الصادرة من أجل:
  • المرجع المصدّق الذي يصدر شهادتك
  • خادم الناشر الذي يستضيف مستندات AMP للتوقيع
  • cdn.ampproject.org للحصول على الإصدار الحالي من AMP
  • نظام ملفات تخزين مشترك دائم بين جميع مثيلات amppackager التي يتم تشغيلها في مركز البيانات نفسه.

تنفيذ التبادلات الموقّعة

يوجد أدناه ترتيب التنفيذ المقترح لدعم التبادلات الموقّعة على مستندات AMP الخاصة بك.

الحصول على شهادة TLS معتمدة

لإنتاج تبادلات موقّعة، تحتاج إلى شهادة TLS مع الامتداد CanSignHttpExchanges. اعتبارًا من أبريل 2019، DigiCert هو المزود الوحيد لهذا الامتداد (مزيد من المعلومات).

لإنشاء الشهادة، سيطلب المرجع المصدّق (CA) طلب توقيع الشهادة (CSR)، والذي يمكن إنشاؤه بواسطة openssl. مثال CSR لصالح ampbyexample.com:

# generate private key (if necessary)

$ openssl ecparam -out ampbyexample-packager.key -name prime256v1 -genkey
# generate CSR (the file ampbyexample-packager.csr)

$ openssl req -new -key ampbyexample-packager.key -nodes -out ampbyexample-packager.csr -subj "/C=US/ST=California/L=Mountain View/O=Google LLC/CN=ampbyexample.com"

تحديد عناوين URL التي سيتم توقيعها

ستحتاج إلى إنشاء نمط عنوان URL الذي يحدّد المستندات التي يجب توقيعها. من الأهمية عدم توقيع محتوى خاص، مثل المعلومات الشخصية، لتجنب إرسال محتوى مضلل أو غير صحيح.

لأغراض تتعلق بالأداء، يجب أن يتم تمرير مستندات AMP الصالحة فقط إلى أداة إنشاء الحِزم كمدخل. بعض مستندات AMP غير الصالحة جيدة إذا لزم الأمر، ولكن يجب تجنب إرسال كل حركة مرور عبر أداة إنشاء الحِزم.

نشر أداة إنشاء الحِزم إلى خادم مرحلي

يجب عليك أولاً إعداد التبادلات الموقّعة على خادم مرحلي للتحقق من صحة الإعداد قبل الترحيل إلى الإنتاج.

نُوصي باستخدام amppackager لإنشاء التبادلات الموقّعة. ومع ذلك، إذا لم يكن هذا مناسبًا لبيئة الإنتاج، يمكنك بدلاً من ذلك استخدام عملاء سطر الأوامر transform وgen-signedexchange، وتولي مهام التفاوض بشأن المحتوى وإدارة الشهادات بنفسك.

تنطبق الإرشادات التالية على عمليات النشر التي تستخدم amppackager.

التكوين

ملف تكوين amppackager (amppkg.toml) يستدعي CertFile وKeyFile.

KeyFile هو المفتاح الخاص (ampbyexample-packager.key في المثال أعلاه)، ويجب أن يكون بالتنسيق التالي. (ملاحظة: لا تشارك مفتاحك الخاص، وقم بحمايته من المشاركة غير المقصودة!)

-----BEGIN EC PARAMETERS-----
BggqhkjOPQMBBw==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEINDgf1gprbdD6hM1ttmRC9+tOqJ+lNRtHwZahJIXfLADoAoGCCqGSM49

4j1NY29jVmAMQYrBYb+6heiv6ok+8c/zJQ==
-----END EC PRIVATE KEY-----

CertFile هي الشهادة العامة. إذا قدّمت DigiCert الشهادة، فيمكن إنشاء ذلك من خلال الجمع بين الشهادة الخاصة بالشهادة الأصل المُقدّمة من DigiCert وملف DigiCertCA.crt معًا.

-----BEGIN CERTIFICATE-----
MIIE0zCCBFmgAwIBAgIQCkEgeFknZluZtdcJnvdFCjAKBggqhkjOPQQDAjBMMQsw
CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMSYwJAYDVQQDEx1EaWdp
Q2VydCBFQ0MgU2VjdXJlIFNlcnZlciBDQTAeFw0xODEwMzAwMDAwMDBaFw0xOTEx
MDYxMjAwMDBaMGIxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJjYTEWMBQGA1UEBxMN
TW91bnRhaW4gVmlldzETMBEGA1UEChMKR29vZ2xlIExMQzEZMBcGA1UEAxMQYW1w
YnlleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAGu0CjzWa6i

PXLGRK8i0lr7Jv6ZKPY8tfaB/c5yK404QU4HNggmAiEAlnNjIerjJOLHb8CvVaUQ
nhhn0a35nHp1yvE651W14fMwCgYIKoZIzj0EAwIDaAAwZQIwI4/7dpqJQxkQwpP3
DAjVOFdjC6PDcUIRPll3bF0srrTUXSyZ8xkM4q/RhB51A0hVAjEAsUGNYBje9RIO
wf9qyV2iHB+9cBwgKfC0KvEcBugbgHShypM8hPhV9UMC3qTpdKPx
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDrDCCApSgAwIBAgIQCssoukZe5TkIdnRw883GEjANBgkqhkiG9w0BAQwFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
QTAeFw0xMzAzMDgxMjAwMDBaFw0yMzAzMDgxMjAwMDBaMEwxCzAJBgNVBAYTAlVT

loB5hWp2Jp2VDCADjT7ueihlZGak2YPqmXTNbk19HOuNssWvFhtOyPNV6og4ETQd
Ea8/B6hPatJ0ES8q/HO3X8IVQwVs1n3aAr0im0/T+Xc=
-----END CERTIFICATE-----

التثبيت

اتّبع الإرشادات هنا لإعداد amppackager لموقعك.

راجع packager.js (المستخدم بواسطة amp.dev) للحصول على مثال حول التغييرات بجانب الخادم التي ستحتاج إلى إجرائها لتوجيه الطلبات المطلوبة إلى amppkg.

الاختبار

تحقق من أن الموقع المرحلي الخاص بك يستجيب بمحتوى من نوع MIME بالقيمة application/signed-exchange عند تحديده بواسطة طلب HTTP. على سبيل المثال (استبدل staging.example.com بخادمك المرحلي):

$ curl -si -H 'amp-cache-transform: google;v="1..100"' -H 'accept: application/signed-exchange;v=b3;q=0.9,*/*;q=0.8' https://staging.example.com/ | less

يجب أن يتضمن الإخراج هذا السطر:

content-type: application/signed-exchange;v=b3

يُعد v="1..100" في الطلب عنصرًا نائبًا. لا يتطابق مع هذه القيمة تمامًا؛ بدلاً من ذلك، كما هو موضح في تعليمات تثبيت amppackager، تحقق من وجود الرأس amp-cache-transform فقط، وتجاهل القيمة.

سلسلة الإصدار v=b3 في الاستجابة هي الإصدار اعتبارًا من أغسطس 2019. سيتغير هذا الإصدار.

يجب أن يكون الجزء الأكبر من الاستجابة هو صفحة AMP الخاصة بك (بنص عادي). يوجد رأس ثنائي صغير، وإذا كانت الصفحة أكبر من 16 كيلوبايت، يتم توزيع بضع وحدات بايت ثنائية في كل مكان.

يمكن استخدام أداة dump-signedexchange لفحص الاستجابة:

$ curl -s --output - -H 'amp-cache-transform: google;v="1..100"' -H 'accept: application/signed-exchange;v=b3;q=0.9,*/*;q=0.8' https://staging.example.com/ > example.sxg
$ dump-signedexchange -i example.sxg
format version: 1b3

(لاحظ أن مفتاح التحويل -verify لن يعمل في هذه المرحلة لأن الشهادات المطلوبة ليست على خادم https://example.com/.)

تحقق من أن الاستجابة دائمًا تتضمن رأس Vary مع القيمة Accept,AMP-Cache-Transform (بغض النظر عما إذا كان نوع MIME هو text/html أو application/signed-exchange أو أي شيء آخر):

$ curl -si https://staging.example.com/ | less

يجب أن يتضمن هذا المخرج هذا السطر:

vary: Accept,AMP-Cache-Transform

نشر أداة إنشاء الحِزم في الإنتاج

التثبيت

اضبط خطوات نشر المراحل أعلاه بما يتناسب مع بيئة الإنتاج الخاصة بك.

الاختبار

باستخدام أدوات سطر الأوامر

قم بإجراء الاختبارات المذكورة نفسها أعلاه. dump-signedexchange -verify يجب أن تنجح الآن كذلك.

باستخدام Chrome

يمكنك أيضًا الاختبار في Chrome بمساعدة ModHeader extension. يمكنك تثبيته من متجر Chrome على الويب وتكوين Request Headers في amp-cache-transform باستخدام Value من google.

بعد طلب https://example.com/ سيعرض الخادم تبادلاً موقّعًا، ولكن يجب أن يبدو ويتصرف كما كان من قبل. ستحتاج إلى التحقق من إرجاع التبادل الموقّع بشكل صحيح عبر وحدة تحكم DevTools.

ضمن علامة التبويب Network انقر على اسم مجالك وتحقق من ظهور Signed HTTP exchange ضمن Preview.

باستخدام ذاكرة Google AMP للتخزين المؤقت

تأكد من توافق التبادلات الموقّعة مع ذاكرة التخزين المؤقت من Google AMP. يتعلق هذا بإمكانية اكتشافها على محركات البحث مثل "بحث Google".

لاختبار التبادلات الموقّعة في ذاكرة Google AMP للتخزين المؤقت، افتح علامة تبويب الشبكة في DevTools، وقم بتمكين Preserve log، وانتقل إلى عنوان URL مثل https://example-com.cdn.ampproject.org/wp/s/example.com/.

ستقوم DevTools بعرض 200 باستخدام صف signed-exchange وfrom signed-exchange، إذا كان الطلب ناجحًا.

إذا لم ينجح، سيتم فقد صفوف التبادل الموقّع، أو سيتم تمييزها باللون الأحمر. كما قد يتوفر رأس warning الذي يقدّم معلومات إضافية.

التبادلات الموقّعة في بحث Google

إذا تم توزيع صفحات AMP الخاصة بك بنجاح على أنها عمليات تبادل موقّعة، ستعرض نتائج البحث سهم البرق الخاص بصفحات AMP، كما كان من قبل، ولكن النقر على النتائج سيعرض https://example.com في شريط عنوان URL، بدلاً من عنوان URL يبدأ بـ https://www.google.com/amp/….. بالإضافة إلى ذلك، لن يظهر شريط viewer.

داخل وحدة تحكم DevTools، ضمن علامة التبويب network ستتمكّن من رؤية signed-exchange ضمن العمود type.

مزوّدو خدمة التبادل الموقّعة

فيما يلي قائمة بشبكات توصيل المحتوى (CDN) ومزوّدي الاستضافة الذين يقدمون دعمًا خارج الصندوق لعمليات التبادل الموقّعة. يُعد استخدام أحد هذه أسهل طريقة لبدء التبادلات الموقّعة:

  • تعد AMP Packager Google Cloud Click-to-Deploy Installer AMP Packager أداة لتحسين عناوين URL لصفحات AMP من خلال تقديم AMP باستخدام المبادلات الموقّعة. اقرأ المزيد في مدونة AMP.
  • Cloudflare AMP Real URL. Cloudflare هي إحدى أكبر الشبكات في العالم. اليوم، تفتخر الشركات والمؤسسات غير الربحية والمدونون وأي شخص له وجود على الإنترنت بمواقع وتطبيقات أسرع وأكثر أمانًا بفضل Cloudflare.