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.


$config[zx-auto] not found$config[zx-overlay] not found