אביב 5 וסרוולט 4 - ה- PushBuilder

1. הקדמה

טכנולוגיית Server Push - חלק מ- HTTP / 2 (RFC 7540) - מאפשרת לנו לשלוח משאבים ללקוח באופן יזום מצד השרת. זהו שינוי משמעותי מגישה מבוססת משיכה HTTP / 1.X.

אחת התכונות החדשות שמביא אביב 5 - היא תמיכת דחיפת השרת שמגיעה עם ג'קרטה EE 8 Servlet 4.0 API. במאמר זה נחקור כיצד להשתמש בדחיפת שרתים ולשלב אותו עם בקרי MVC של Spring.

2. תלות של Maven

נתחיל בהגדרת תלות בה נשתמש:

 org.springframework spring-webmvc 5.2.8.RELEASE javax.servlet javax.servlet-api 4.0.0 מסופק 

הגרסאות האחרונות של אביב-mvc ו- servlet-api נמצאות ב- Maven Central.

3. דרישות HTTP / 2

כדי להשתמש בדחיפת שרת, נצטרך להריץ את היישום שלנו במיכל התומך ב- HTTP / 2 וב- API של Servlet 4.0. דרישות תצורה של מיכלים שונים ניתן למצוא כאן, בוויקי האביב.

בנוסף, אנחנו זקוקים לתמיכה ב- HTTP / 2 בצד הלקוח; כמובן שלרוב הדפדפנים הנוכחיים יש תמיכה זו.

4. PushBuilder תכונות

ה PushBuilder הממשק אחראי על הטמעת דחיפת השרת. באביב MVC נוכל להזריק א PushBuilder כטיעון של השיטות המוערות באמצעות @ בקשת מיפוי.

בשלב זה, חשוב לקחת בחשבון כי - אם ללקוח אין תמיכה ב- HTTP / 2 - ההפניה תישלח כ- ריק.

הנה ה- API הליבה שמציע ה- PushBuilder מִמְשָׁק:

  • נתיב (נתיב מחרוזת) - מציין את המשאב שאנו שולחים
  • לדחוף () - שולח את המשאב ללקוח
  • addHeader (שם מחרוזת, ערך מחרוזת) - מציין את הכותרת המשמשת עבור המשאב הדחוף

5. דוגמה מהירה

כדי להדגים את האינטגרציה, ניצור את ה- demo.jsp דף עם משאב אחד - logo.png:

     הדגמה של PushBuilder

אנו גם נחשוף שתי נקודות קצה עם ה- PushController בקר - אחד המשתמש בדחיפת שרת ואחר שלא:

@Controller מחלקה ציבורית PushController {@GetMapping (path = "/ demoWithPush") ציבורי מחרוזת demoWithPush (PushBuilder pushBuilder) {if (null! = PushBuilder) {pushBuilder.path ("resources / logo.png"). Push (); } להחזיר "הדגמה"; } @ GetMapping (path = "/ demoWithoutPush") ציבורי מחרוזת demoWithoutPush () {להחזיר "הדגמה"; }}

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

כשאנחנו קוראים demoWithoutPush השיטה, התצוגה והמשאב מתפרסמים ונצרכים על ידי הלקוח באמצעות טכנולוגיית המשיכה:

כשאנחנו קוראים demoWithPush בשיטה, אנו יכולים לראות את השימוש בשרת הדחיפה וכיצד מועבר המשאב מראש על ידי השרת, מה שמביא לזמן טעינה נמוך יותר:

טכנולוגיית דחיפת השרת יכולה לשפר את זמן הטעינה של דפי היישומים שלנו בתרחישים רבים. עם זאת, עלינו לקחת בחשבון שלמרות שאנו מקטינים את החביון, אנו יכולים להגדיל את רוחב הפס - בהתאם למספר המשאבים שאנו משרתים.

זה רעיון טוב לשלב טכנולוגיה זו עם אסטרטגיות אחרות כגון Caching, Resource Minification ו- CDN, ולהריץ בדיקות ביצועים ביישום שלנו כדי לקבוע את נקודות הקצה האידיאליות לשימוש בדחיפת שרת.

6. מסקנה

במדריך מהיר זה, ראינו דוגמה כיצד להשתמש בטכנולוגיית דחיפת השרת עם Spring MVC באמצעות ה- PushBuilder ממשק, והשווינו את זמני הטעינה בעת השימוש בו לעומת טכנולוגיית המשיכה הסטנדרטית.

כמו תמיד, קוד המקור זמין ב- GitHub.