הפעלת דחיסה דינמית

דחיסה דינמית דוחסת אוטומטית את התשובות שמוצגות על ידי 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 לבחור באופן אוטומטי את אלגוריתם הדחיסה הטוב ביותר.

כדי להפעיל דחיסה דינמית:

המסוף

  1. נכנסים לדף Media CDN במסוף Google Cloud .

    מעבר אל Media CDN

  2. כדי לפתוח את הדף פרטים של השירות שרוצים להגדיר עבורו כלל ניתוב, לוחצים על שם השירות.

  3. כדי לעבור למצב עריכה, לוחצים על הלחצן עריכה.

  4. כדי לעבור לקטע ניתוב, לוחצים על הבא.

  5. כדי לערוך כלל מארח, לוחצים על החץ כדי להרחיב אותו.

  6. כדי לערוך כלל ניתוב, לוחצים על עריכה בשורה הרלוונטית.

  7. בחלונית עריכת כלל ניתוב, לוחצים על הגדרות מתקדמות.

  8. אופציונלי: בפעולת ניתוב, מוסיפים פריט מדיניות CDN.

    מדיניות CDN מאפשרת ל-Media CDN לדחוס תוכן פעם אחת ולהציג אותו כמה פעמים, וכך לחסוך ברוחב פס ולהאיץ את ההעברה.

  9. בקטע Dynamic compression, בוחרים באפשרות Enable compression.

  10. כדי לשמור את כלל הניתוב, לוחצים על שמירה.

  11. כדי לשמור את השינויים בשירות, לוחצים על עדכון השירות.

‫gcloud ו-YAML

  1. מייצאים את ההגדרה של Media CDN לקובץ YAML. משתמשים בפקודה gcloud edge-cache services export.

    gcloud edge-cache services export SERVICE_NAME \
        --destination=FILENAME.yaml
    

    מחליפים את מה שכתוב בשדות הבאים:

    • SERVICE_NAME: השם של השירות
    • FILENAME : השם של קובץ ה-YAML
  2. בהגדרת המסלול בקובץ ה-YAML, בקטע routeAction, מגדירים את compressionMode ל-AUTOMATIC, כמו בדוגמה הבאה:

    routing:
    hostRules:
    - hosts:
      -