אביב 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.