דחיסה דינמית דוחסת באופן אוטומטי את התשובות שמוצגות על ידי Media CDN. במקרים רגילים, נפח הנתונים שנשלחים ברשת קטן ב-60% עד 85%.
הקטנת הגודל מאיצה את ההורדה של נכסים חשובים, כמו גיליונות סגנונות (CSS), סקריפטים (JavaScript) ומניפסטים של סרטונים (HLS/DASH), ויכולה לקצר באופן משמעותי את זמני טעינת הדף והפעלת הסרטון.
בפלייליסטים גדולים של סרטונים בשידור חי (מניפסטים) יש כמות משמעותית של נתונים ופעולות אחזור שחוזרים על עצמם, כולל המארח וקידומת הנתיב של כל פלח, וגם המטא-נתונים של הפלייליסט בפורמט HLS או DASH. ככל שהפלייליסט נטען מהר יותר או שהעדכונים של הפלייליסט ניתנים להורדה מהר יותר, כך הלקוח צריך לחכות פחות זמן כדי לנתח ולהתחיל להוריד את פלחי הסרטון שאליהם יש הפניה. בדרך כלל, גודל הפלייליסטים בפורמטים HLS ו-DASH קטן ביותר מ-90%.
מידע נוסף על היתרונות של דחיסת תשובות זמין במדריך Web Fundamentals.
איך פועלת דחיסה דינמית
כשהדחיסה הדינמית מופעלת, תוכן שניתן לדחיסה שמוצג מהמקור יכול להידחס לפני שהוא מועבר אם הלקוח מקבל אחד מאלגוריתמי הדחיסה הנתמכים (br או gzip).
Media CDN מוסיף כותרת Vary: Accept-Encoding לכל התגובות שעומדות בדרישות לדחיסה. מידע נוסף בנושא זמין במאמר תוכן שלא ניתן לדחיסה.
בנוסף, אם הכותרת Accept-Encoding של הבקשה מציינת העדפה לתוכן דחוס על ידי ציון br או gzip (ואופציונלית כוללת פרמטר q שאינו אפס), Media CDN מבצע את הפעולות הבאות:
הסרת הכותרת
Content-Lengthמהתגובה. הפעולה הזו נדרשת כדי לאפשר הצגה של התגובה במהירות האפשרית, כי אורך התוכן המלא לא ידוע עד שכל התגובה נדחסת. ב-HTTP/1.1 ובגרסאות קודמות, Media CDN משתמש ב-Transfer-Encoding: chunkedבתגובה כשהוא לא משתמש ב-Content-Length.אחרי שתגובה נדחסת ונשמרת במטמון, Media CDN יכול לכלול את הכותרת
Content-Lengthבתגובות הבאות ולהגדיר את הערך לאורך של תוכן הגוף הדחוס.מגדירים את
Accept-Rangesלערךnone. ההודעה הזו מודיעה ללקוחות שהמערכת מתעלמת מבקשות טווח למשאב הזה.מחליש כותרות תגובה חזקות של
ETag, כנדרש על ידי RFC 9110 סעיף 8.8.3. לדוגמה, מחליפים אתETag: "xyzzy"ב-ETag: W/"xyzzy".הגדרת הכותרת
Content-Encodingלערךbrאוgzip, שמציין את אלגוריתם הדחיסה שנבחר.Media CDN בוחר את אלגוריתם הדחיסה הטוב ביותר על סמך יחס הדחיסה הצפוי של התגובה ומהירות הדחיסה או קצב העברת הנתונים.
אם הלקוח תומך בדחיסת Brotli, המערכת תשתמש בה, גם אם אלגוריתמים אחרים לדחיסה מקבלים ערכים גבוהים יותר של
qבכותרתAccept-Encoding.מניפסטים של HLS נדחסים באמצעות
gzipבלבד.
Media CDN קובע את רמת הדחיסה כדי לאזן בין הגודל הכולל של ההורדה לבין עלות ה-CPU בלקוח. רמות דחיסה גבוהות יותר לא תמיד משפרות את הביצועים, במיוחד במכשירים ניידים עם עוצמת עיבוד נמוכה יותר.
הגדרת דחיסה דינמית
אפשר להפעיל דחיסה דינמית במסלולים שמשרתים בקשות.
לפני שמתחילים
מבצעים את הפעולות הבאות:
מאתרים או יוצרים מקור של Media CDN עם תוכן שניתן לדחיסה ומוכן להצגה.
מאתרים או יוצרים שירות Media CDN עם לפחות כלל מסלול אחד.
הפעלת דחיסה דינמית לכלל מסלול
כברירת מחדל, מצב הדחיסה של כלל מסלול מושבת.
הגדרת המצב לאוטומטי מאפשרת דחיסה דינמית לכל תגובה שעומדת בדרישות. בנוסף, הוא מורה ל-Media CDN לבחור באופן אוטומטי את אלגוריתם הדחיסה הטוב ביותר.
כדי להפעיל דחיסה דינמית:
המסוף
נכנסים לדף Media CDN במסוף Google Cloud .
כדי לפתוח את הדף פרטים של השירות שרוצים להגדיר עבורו כלל מסלול, לוחצים על שם השירות.
כדי לעבור למצב עריכה, לוחצים על הלחצן עריכה.
כדי לעבור לקטע ניתוב, לוחצים על הבא.
כדי לערוך כלל מארח, לוחצים על החץ כדי להרחיב אותו.
כדי לערוך כלל מסלול, לוחצים על עריכה בשורה הרלוונטית.
בחלונית עריכת כלל מסלול, לוחצים על הגדרות מתקדמות.
אופציונלי: בפעולת ניתוב, מוסיפים פריט מדיניות CDN.
מדיניות CDN מאפשרת ל-Media CDN לדחוס תוכן פעם אחת ולהציג אותו כמה פעמים, וכך לחסוך ברוחב פס ולהאיץ את ההעברה.
בקטע Dynamic compression, בוחרים באפשרות Enable compression.
כדי לשמור את כלל הניתוב, לוחצים על שמירה.
כדי לשמור את השינויים בשירות, לוחצים על עדכון השירות.
gcloud ו-YAML
מייצאים את ההגדרה של Media CDN לקובץ YAML. משתמשים בפקודה
gcloud edge-cache services export.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yamlמחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_NAME: השם של השירות -
FILENAME: השם של קובץ ה-YAML
-
בהגדרת המסלול בקובץ ה-YAML, בקטע
routeAction, מגדירים אתcompressionModeל-AUTOMATIC, כמו בדוגמה הבאה:routing: hostRules: - hosts: - media.example.com pathMatcher: routes pathMatchers: - name: routes routeRules: - priority: 2 origin: origin1 matchRules: - pathTemplateMatch: "/**.m3u8" # HLS playlists - pathTemplateMatch: "/**.mpd" # DASH manifests routeAction: cdnPolicy: defaultTtl: 5s compressionMode: AUTOMATICכדי לעדכן את השירות, מייבאים את ההגדרה של Media CDN מקובץ ה-YAML. משתמשים בפקודה
gcloud edge-cache services import.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Terraform
בקטע הקוד הבא של Terraform מוצג כלל ניתוב עם דחיסה דינמית מופעלת.
ההגדרה שלכם תתעדכן בקרוב בכל המיקומים של שרתי הקצה.
כשדחיסה דינמית מופעלת עבור מסלול וההגדרה החדשה נכנסת לתוקף במכונות ייצור, Media CDN מתחיל לדחוס תגובות שעומדות בדרישות, גם אם קיימות גרסאות לא דחוסות במטמון. בזמן ש-Media CDN מאחזר ומדחס תוכן חדש, יכול להיות שתהיה עלייה זמנית בתנועה אל השרת המקורי.
השבתת דחיסה דינמית לכלל מסלול
כדי להשבית דחיסה דינמית:
המסוף
נכנסים לדף Media CDN במסוף Google Cloud .
כדי לפתוח את הדף פרטים של השירות שרוצים להגדיר עבורו את כלל המסלול, לוחצים על שם השירות.
כדי לעבור למצב עריכה, לוחצים על הלחצן עריכה.
כדי לעבור לקטע ניתוב, לוחצים על הבא.
כדי לערוך כלל מארח, לוחצים על החץ כדי להרחיב אותו.
כדי לערוך כלל מסלול, לוחצים על עריכה בשורה הרלוונטית.
בחלונית עריכת כלל מסלול, לוחצים על הגדרות מתקדמות.
בקטע Dynamic compression (דחיסה דינמית), מבטלים את הסימון של Enable compression (הפעלת דחיסה).
כדי לשמור את כלל הניתוב, לוחצים על שמירה.
כדי לשמור את השינויים בשירות, לוחצים על עדכון השירות.
gcloud ו-YAML
מייצאים את ההגדרה של Media CDN לקובץ YAML. משתמשים בפקודה
gcloud edge-cache services export.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yamlמחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_NAME: השם של השירות -
FILENAME: השם של קובץ ה-YAML
-
בהגדרת המסלול בקובץ ה-YAML, מגדירים את
compressionModeל-DISABLED.כדי לעדכן את השירות, מייבאים את ההגדרה של Media CDN מקובץ ה-YAML. משתמשים בפקודה
gcloud edge-cache services import.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
אם נתקלים בבעיות בדחיסה דינמית במסלול מסוים, כמו בעיות תאימות עם לקוחות מסוימים (לדוגמה, טלוויזיות חכמות או מכשירי סטרימינג), כדי למנוע מ-Media CDN להציג תוכן דחוס במסלול הזה, צריך להשבית את הדחיסה הדינמית.
השבתה של דחיסה דינמית במסלול גורמת ל-Media CDN להפסיק להציג תוכן דחוס מהמטמון. כל התגובות הדחוסות ששמורות במטמון כבר לא תקפות, וה-CDN מאחזר גרסאות לא דחוסות מהמקור.
סוגי תוכן שניתן לדחוס
דחיסה דינמית חלה על סוגי ה-MIME הבאים, על סמך כותרת תגובת ה-HTTP Content-Type. תשובות שלא כוללות כותרת Content-Type לא נדחסות.
סוגי תוכן נפוצים וסוגי ה-MIME שלהם:
- תוכן HTML:
text/html - גיליונות סגנונות:
text/css - JavaScript:
application/javascript - JSON:
application/json - פלייליסטים של HLS:
application/x-mpegURLאוapplication/vnd.apple.mpegURL - מניפסטים של DASH:
application/dash+xml
בטבלה הבאה מוסבר איך סוג ה-MIME משפיע על יכולת הדחיסה.
| סוגי MIME שניתן לדחוס | |
|---|---|
| התאמה מדויקת |
application/csv application/javascript application/json application/json+protobuf application/signed-exchange application/wasm application/x-javascript application/x-nacl application/x-plist application/x-pnacl application/x-protobuf application/x-protobuffer application/x-sdch-dictionary application/xml audio/mpegURL font/eot font/otf font/ttf image/pwg-raster image/svg+xml image/vnd.microsoft.icon image/x-icon video/vnd.mpeg.dash.mpd |
| התאמת דפוסים | application/*+json application/*+xml application/*mpegURL text/* |
פורמטים של תמונות וסרטונים (כמו image/jpeg, image/png ו-video/mpeg4)
כמעט תמיד כבר דחוסים. לכן, Media CDN לא דוחס אותם. דחיסה מחדש של תגובה שכבר נדחסה בדרך כלל לא מקטינה את גודל הקובץ, והלקוחות עשויים להציג התנהגות לא צפויה כשהם מקבלים תגובה מהסוג הזה.
תשובות שלא ניתן לדחוס
Media CDN לא דוחס תגובה שיש לה מאפיין אחד או יותר מהמאפיינים הבאים:
- בתגובה אין כותרת
Content-Typeשתואמת לסוג תוכן שניתן לדחיסה. - בתשובה אין כותרת
Content-Length. - בתשובה יש כותרת
Content-Encoding. המשמעות היא שהמקור כבר דחס את התגובה. לכן, ב-Media CDN אסור לבצע דחיסה דינמית נוספת. התשובה קטנה מ-1 KiB.
הזמן שנדרש לדחיסה ולפריסה של הקבצים מבטל בדרך כלל את היתרונות. בנוסף, יש פחות תוכן לדחוס, מה שיכול להפחית את היעילות של הדחיסה ולהוביל ליחס דחיסה נמוך יותר.
התשובה גדולה מ-1MiB.
Media CDN דוחס תגובות עד לגודל שמותר לאחסון במטמון של אובייקטים ללא אחסון במטמון של טווח בייטים.
בתשובה יש כותרת
Cache-Control: no-transform.
רישום ביומן ומעקב
כשהדחיסה מופעלת, המדד הקיים https/response_bytes_count בדוח edgecache.googleapis.com/EdgeCacheRouteRule מציג את גודל התגובה הדחוסה. אפשר לצפות לירידה במספר הכולל של בייטים בתשובה ובקצב העברת הנתונים היוצאים עבור תוכן שניתן לדחיסה.
היומנים של Media CDN כוללים את השדה compressionAlgorithmApplied ב-jsonPayload, שמציין אם מאזן העומסים דחס את התשובה וגם את סוג הדחיסה.
{
insertId: "1c02hw9g3gjay67"
jsonPayload: {
@type: "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry",
cacheId: "IAD-862d661f",
cacheStatus": "hit,stale",
compressionAlgorithmApplied: "br"
},
}
חיוב
כש-Media CDN דוחס תגובה, החיובים הרלוונטיים על מטמון יוצא או על העברת נתונים באינטרנט מבוססים על הבייטים הדחוסים הסופיים שנשלחים ללקוח.
אם אתם מציגים כמות גדולה של תגובות שניתנות לדחיסה, יכול להיות שתהיה לכם ירידה בעלויות החודשיות של העברת נתונים יוצאים, וגם שיפור בביצועים של משתמשי הקצה.