Jar 5 a Servlet 4 - PushBuilder
1. Úvod
Technológia Server Push - súčasť protokolu HTTP / 2 (RFC 7540) - nám umožňuje proaktívne odosielať prostriedky klientovi zo strany servera. Toto je veľká zmena oproti prístupu založenému na protokole HTTP / 1.X.
Jednou z nových funkcií, ktorú prináša Spring 5 - je podpora serverového push, ktorá je dodávaná s Jakarta EE 8 Servlet 4.0 API. V tomto článku to preskúmame ako používať push servera a integrovať ho do radičov Spring MVC.
2. Závislosť od Maven
Začnime definovaním závislostí, ktoré budeme používať:
org.springframework spring-webmvc 5.2.8. RELEASE javax.servlet javax.servlet-api 4.0.0 provided
Najnovšie verzie serverov jar-mvc a servlet-api nájdete na serveri Maven Central.
3. Požiadavky HTTP / 2
Ak chcete použiť serverový push, budeme musieť spustite našu aplikáciu v kontajneri, ktorý podporuje HTTP / 2 a Servlet 4.0 API. Konfiguračné požiadavky rôznych kontajnerov nájdete tu, na jarnej wiki.
Dodatočne budeme potrebujete podporu HTTP / 2 na strane klienta; väčšina súčasných prehľadávačov túto podporu samozrejme má.
4. PushBuilder Vlastnosti
The PushBuilder rozhranie je zodpovedné za implementáciu push servera. Na jar MVC môžeme vpichnúť a PushBuilder ako argument metód komentovaných s @RequestMapping.
V tejto chvíli je dôležité zvážiť, že - ak klient nemá podporu HTTP / 2 - referencia bude zaslaná ako nulový.
Tu je základné API, ktoré ponúka PushBuilder rozhranie:
- cesta (reťazcová cesta) - označuje zdroj, ktorý pošleme
- tam() - odošle zdroj klientovi
- addHeader (názov reťazca, hodnota reťazca) - označuje hlavičku, ktorú použijeme pre vložený prostriedok
5. Rýchly príklad
Na demonštráciu integrácie vytvoríme demo.jsp stránka s jedným zdrojom - logo.png:
PushBuilder ukážka PushBuilder ukážka
Vystavíme tiež dva koncové body s PushController radič - jeden, ktorý používa serverový push a druhý, ktorý nie:
@Controller verejná trieda PushController {@GetMapping (path = "/ demoWithPush") public String demoWithPush (PushBuilder pushBuilder) {if (null! = PushBuilder) {pushBuilder.path ("resources / logo.png"). Push (); } vrátiť "ukážku"; } @GetMapping (path = "/ demoWithoutPush") public String demoWithoutPush () {return "demo"; }}
Pomocou vývojových nástrojov Chrome môžeme vidieť rozdiely volaním oboch koncových bodov.
Keď hovoríme demoWithoutPush metóda, pohľad a zdroj je publikovaný a spotrebovaný klientom pomocou technológie pull:
Keď hovoríme demoWithPush Táto metóda ukazuje použitie servera push a spôsob, akým server dodáva server vopred, čo má za následok kratšiu dobu načítania:
Technológia push servera môže v mnohých scenároch predĺžiť načítanie stránok našich aplikácií. Ako už bolo povedané, musíme si uvedomiť, že hoci znižujeme latenciu, môžeme zväčšiť šírku pásma - v závislosti od počtu zdrojov, ktoré poskytujeme.
Je tiež dobré kombinovať túto technológiu s ďalšími stratégiami, ako je napríklad ukladanie do medzipamäte, minifikácia zdrojov a CDN, a vykonať testy výkonnosti našej aplikácie, aby sme určili ideálne koncové body pre použitie serverového push.
6. Záver
V tomto rýchlom výučbe sme videli príklad toho, ako používať technológiu serverového tlačenia s Spring MVC pomocou PushBuilder rozhranie a porovnali sme doby načítania pri jeho použití so štandardnou technológiou pull.
Ako vždy, zdrojový kód je k dispozícii na GitHub.