SXG הוא מנגנון מסירה שמאפשר לאמת מקור של משאב, בנפרד מאופן ההעברה שלו.
Exchanges חתומים (SXG) הם מנגנון מסירה שמאפשר לאמת את מקור המשאב ללא קשר לאופן שבו נשלח. הטמעה של SXG יכולה לשפר את Largest Contentful Paint (LCP) על ידי הפעלה של שליפה מראש (prefetch) ממקורות שונים תוך שמירה על הפרטיות. בנוסף, הפענוח הזה מקדם מגוון של תרחישים לדוגמה, כמו חוויית משתמש באינטרנט אופליין והצגה ממטמון של צדדים שלישיים.
המאמר הזה מספק סקירה כללית מקיפה של SXG: איך הוא עובד, תרחישים לדוגמה וכלים ספציפיים.
תאימות דפדפן
SXG נתמך על ידי דפדפנים המבוססים על Chromium (גרסאות מתחילות בגרסאות: Chrome 73, Edge 79 ו-Opera 64).
סקירה כללית
בתרחיש העיקרי לדוגמה, SXG משתמש במטמון כדי לאחזר מראש ולהציג תוכן שנחתם באופן קריפטוגרפי על ידי המקור. כך ניתן לנווט במהירות בין מקורות שונים מאתרים מפנים, ובמקביל להבטיח שהדפים לא בוצעו בהם שינויים ושהם משויכים כראוי למקור שלהם. כל מידע שעשוי להיות מזהה מוסתר עד שהמשתמש עובר לאתר, ובכך מגן על פרטיות המשתמש. חיפוש Google הוא בין הראשונים שמשתמשים ביכולות השליפה מראש של SXG. כשמדובר באתרים שמקבלים חלק גדול מתנועת הגולשים מחיפוש Google, SXG יכול להיות כלי חשוב שמאפשר למשתמשים לטעון דפים מהר יותר. עם הזמן, אנחנו מקווים שההשפעה הזו תתרחב לגורמים מפנים נוספים.
איך זה עובד
אתר חותם על צמד בקשה/תגובה ("המרת HTTP") באופן שמאפשר לדפדפן כדי לאמת את המקור והתקינות של התוכן בנפרד האופן שבו התוכן הופץ. כתוצאה מכך, הדפדפן יכול להציג את כתובת האתר את אתר המקור בסרגל הכתובות ולא את כתובת ה-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 ימים לכל היותר. ניתן למצוא מידע נוסף על
כותרת החתימה ב-Signature HTTP Exchanges
.
תמיכה בהתאמה אישית בצד השרת
SXG שמכיל את הכותרת Vary: Cookie
יוצג רק למשתמשים שלא
מכילים קובצי cookie לכתובת ה-URL החתומה של הבקשה. אם באתר מוצג קוד HTML שונה
למשתמשים שמחוברים לחשבון שלו, תוכלו להשתמש בתכונה הזו כדי לנצל את היתרונות של SXG
בלי לשנות את החוויה הזו. מידע נוסף על התאמה אישית בצד השרת
עם SXG דינמי.
אריזה באינטרנט
SXG הוא חלק מהפלטפורמה משפחה של הצעות למפרטים של האריזה. כמו כן ל-SXG, הרכיב העיקרי הנוסף במפרט של אריזת אינטרנט הוא Web Bundles ("חילופי HTTP בחבילה"). חבילות אינטרנט הן אוסף של משאבי HTTP את המטא-נתונים שדרושים כדי לפרש את החבילה.
הקשר בין SXG לבין Web Bundles הוא סיבה נפוצה לבלבול. SXG ו-Web Bundle הן שתי טכנולוגיות נפרדות שלא תלויות בכל אחת מהטכנולוגיות other – ניתן להשתמש ב-Web Bundles עם החלפות חתומות וגם עם החלפות לא חתומות. יעד שמתקדם באמצעות SXG וחבילות אינטרנט הוא יצירה של 'אריזת אינטרנט' שמאפשר שיתוף של אתרים במלואם לצריכה באופן לא מקוון.
האצת עומסי דפים באמצעות Exchange חתומות
הפעלה של המרות חתומות יכולה להאיץ את הביצועים של דפי אינטרנט ולהשפיע על מדדי הליבה לבדיקת חוויית המשתמש באתר שלכם, במסגרת המהירות שבה נטען רכיב התוכן הכי גדול (LCP). בין מראשוני המשתמשים, חיפוש Google משתמש ב-SXG כדי לספק למשתמשים חוויה מהירה יותר של טעינת דפים בדפים שנטענים מדף תוצאות החיפוש.
חיפוש Google סורק ושומר במטמון SXG כאשר הוא זמין, ומאחזר מראש SXG שהמשתמש צפוי לבקר בו - לדוגמה, הדף התואם לתוצאת החיפוש הראשונה.
SXG פועל בצורה הטובה ביותר במקביל לאופטימיזציות אחרות של ביצועים, כמו שימוש ברשתות CDN וצמצום משאבי משנה שחוסמים רינדור. לאחר ההטמעה, כדאי ליישם את ההמלצות האלה כדי למקסם את התועלת של ה-LCP משליפה מראש של SXG. במקרים רבים, אופטימיזציה כזו יכולה לגרום לטעינות כמעט מיידיות של דפים מחיפוש Google:
ההשפעה של בורסות חתומות
בניסויים קודמים ראינו ירידה ממוצעת של 300 אלפיות השנייה עד 400 אלפיות שנייה ב-LCP כתוצאה משליפה מראש (prefetch) שתומכת ב-SXG. כך אתרים יכולים ליצור רושם ראשוני טוב יותר על המשתמשים, והרבה פעמים יש לכך השפעה חיובית על המדדים העסקיים.
מספר מותגים ואתרים גלובליים כבר נהנו מהתכונה 'בורסות חתומות'. כמקרה לדוגמה, נבחן איך ההטמעה של 'החלפה חתומה' עזרה ל-RebelMouse, מערכת ניהול תוכן חשובה (CMS) לשפר את ביצועי הלקוחות ביצועים ומדדים עסקיים:
- Narcity שיפרה את מדד ה-LCP ב-41%
- ב-Paper Magazine נרשמה עלייה של 27% במספר הסשנים לכל משתמש
- זמן הטעינה של הדף הופחת ב-21% בבלוג MLT
Cloudflare גילתה ש-SXG שיפר את ה-TTDFB ב-98% מהאתרים שבדקתי, וגם שיפר את מדד ה-LCP ב-85% מהאתרים, עם שיפור חציוני של יותר מ-20% בטעינות הדפים שעומדים בדרישות ל-SXG.
הוספה לאינדקס
הייצוגים SXG ושאינם SXG של דף לא מדורגות או נוספו לאינדקס באופן שונה בחיפוש Google. SXG הוא בסופו של דבר מנגנון להעברה — לשנות את התוכן הבסיסי.
AMP
ניתן להעביר תוכן AMP באמצעות SXG. SXG מאפשר שליפה מראש של תוכן AMP ומוצגים באמצעות כתובת ה-URL הקנונית, ולא באמצעות כתובת ה-URL של ה-AMP.ל-AMP יש כתובת URL נפרדת כלים ליצירת SXG.כאן תוכלו לקרוא איך להציג AMP באמצעות המרות חתומות ב- amp.dev.
ניפוי באגים בנכסי SXG באמצעות כלי פיתוח ל-Chrome
כדי לראות תמונה של SXG באופן אישי, צריך להשתמש בדפדפן Chromium, לפתוח את כלי הפיתוח, לפתוח את החלונית 'רשת' ולהיכנס לדף החיפוש לדוגמה. כדי לזהות המרות חתומות, מחפשים את signed-exchange
בעמודה סוג.
בכרטיסייה תצוגה מקדימה מוצג מידע נוסף על התוכן של SXG.
כלים
הטמעת SXG כוללת יצירה של ה-SXG התואם לכתובת URL נתונה ולאחר מכן להציג את ה-SXG הזה למגישי הבקשות (בדרך כלל סורקים).
אישורים
כדי ליצור SXG, אתם זקוקים לאישור עם חתימה על SXG, למרות שיש כלים שרוכשים אותם באופן אוטומטי. בדף הזה מפורטות רשויות האישורים שיכולות להנפיק לכם אישור מהסוג הזה. אפשר לקבל אישורים באופן אוטומטי מרשות האישורים של Google באמצעות כל לקוח ACME. לשרת Web Packager יש לקוח ACME מובנה, ובקרוב sxg-rs יפעל.
כלי SXG ספציפיים לפלטפורמה
הכלים האלה תומכים בסטאקציות של טכנולוגיות ספציפיות. אם אתה כבר משתמש ייתכן שיהיה לכם קל יותר להגדיר פלטפורמה כזו שנתמכת על ידי אחד מהכלים האלה לכלי לשימוש כללי.
sxg-rs/fastly_compute
פועל על Fastly Compute@Edge.חתימה אוטומטית Exchanges הן תכונה של Cloudflare שיוצרת אישורים באופן אוטומטי בורסה חתומה.
מודול NGINX SXG יוצר ומשרתת SXG עבור אתרים שמשתמשים ב-nginx. תהליך ההגדרה כאן.
Envoy SXG פילטר יוצרת ומציגה SXG עבור אתרים שמשתמשים Envoy.
כלי SXG לשימוש כללי
שרת HTTP של sxg-rs
SXg-rs
http_server
משמש כשרת proxy הפוך
שמגישים SXG. עבור בקשות שנשלחות מהסורקים של SXG, האפליקציה http_server
תחתום על
מהקצה העורפי, ולהשיב באמצעות SXG. להתקנה
הוראות מפורטות
README.
שרת Web Packager
חבילות האינטרנט
Server,
webpkgserver
, הוא חלופה ל-sxg-rs http_server, שכתוב ב-Go. עבור
להוראות להגדרת שרת Web Packager, ראה כיצד להגדיר
המרות באמצעות Web Packager.
CLI של 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 עבור וליצור SXGs. זוהי ספריית SXG עם הכי הרבה תכונות והיא משמשת לשימוש בכליםcloudflare_worker
ו-fastly_compute
.libsxg
היא ספריית C מינימלית עבור וליצור SXGs. הוא משמש כבסיס למודול NGINX SXG מסנן Envoy SXG.go/signed-exchange
היא ספריית Go מינימלית שמסופקת על ידי המפרט של webpackage קובץ עזר של וליצור SXGs. הוא משמש כבסיס לכלי ה-CLI להפניות שלו,gen-signedexchange
והכלים המתקדמים יותר Web Packager.
משא ומתן על תוכן
השרתים צריכים להציג SXG כשהכותרת Accept (אישור) מציינת שה-q-value של application/signed-exchange גדול מ-q-value של טקסט/html או שווה לו. בפועל, המשמעות היא ששרת מקור יציג SXG לסורקים, אבל לא לדפדפנים. רבים מהכלים שלמעלה עושים זאת כברירת מחדל, אבל בכלים אחרים, אפשר להשתמש בביטוי הרגולרי הבא כדי להתאים לכותרת 'אישור' של בקשות שאמורות להיות מוצגות כ-SXG:
http
Accept: /(^|,)\s\*application\/signed-exchange\s\*;\s\*v=[[:alnum:]\_-]+\s\*(,|$)/
ההמלצה הזו כוללת דוגמאות ל-Apache ול-nginx.
עדכון המטמון API
במטמון SXG של Google יש API שבעלי אתרים יכולים להשתמש בו כדי להסיר מהמטמון SXG לפני שהתוקף שלהם פג בגלל Cache-Control: max-age
. פרטים נוספים זמינים בחומר העזר בנושא 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 היא אחת מהטכנולוגיות הרבות האפשריות שמאפשרות שליפה מראש (prefetch) ממקורות שונים. כשאתם מחליטים באיזו טכנולוגיה להשתמש, ייתכן שתצטרכו לבחור בין אופטימיזציה של היבטים שונים. הקטעים הבאים ממחישים כמה מהערכים הייחודיים ש-SXG מספק במסגרת הפתרונות האפשריים. הגורמים האלה עשויים להשתנות עם הזמן, ככל שמרחב הפתרונות הזמינים מתפתח.
פחות בקשות להצגה
באמצעות שליפה מראש (prefetch) מאתרים שונים, יכול להיות שהשרת שלכם יצטרך למלא בקשות נוספות. הנתון הזה תואם למקרים שבהם דף כלשהו נשלף מראש, אבל המשתמש לא ביקר בדף או שהבייטים שנשלפו מראש לא הוצגו למשתמש. עבור SXG, ניתן לצמצם באופן משמעותי את הבקשות הנוספות הבאות שלא נעשה בהן שימוש:
- קישורי SXG נשמרים במטמון ועשויים להישלח למשתמשים עד שהתוקף שלהם יפוג. לכן, יש הרבה שליפה מראש (prefetch) שניתן לטפל בה רק על ידי שרת המטמון.
- ניתן להציג SXG למשתמשים עם או בלי קובצי Cookie באתר שלכם. לכן, יהיו פחות מקרים שבהם יהיה צורך לאחזר שוב את הדף לאחר הניווט.
שיפור מהירות הדף
יכול להיות שתראו שיפור נוסף במהירות הדפים בגלל היכולות והפלטפורמות של השליפה מראש שנתמכות כרגע:
- ניתן להציג SXG למשתמשים עם קובצי cookie לאתר שלך.
- כשמשתמשים ב-SXG, המערכת מאחזרת מראש משאבי משנה לדפים, כמו JavaScript, CSS, גופנים ותמונות, כשהיא מוגדרת באמצעות הכותרת
Link
. - בעתיד הקרוב, שליפה מראש של SXG מחיפוש Google תהיה זמינה בסוגים נוספים של תוצאות חיפוש.
סיכום
העברות חתומות הן מנגנון מסירה שמאפשר לאמת את המקור והחוקיות של המשאב, בנפרד מהאופן שבו המשאב נמסר. כתוצאה מכך, צדדים שלישיים יכולים להפיץ SXG לשמור על ייחוס מלא של בעל תוכן דיגיטלי.