Proljeće 5 i Servlet 4 - PushBuilder

1. Uvod

Server Push tehnologija - dio HTTP / 2 (RFC 7540) - omogućuje nam da klijentu proaktivno šaljemo resurse sa strane poslužitelja. Ovo je velika promjena u odnosu na HTTP / 1.X pristup temeljen na povlačenju.

Jedna od novih značajki koju donosi Spring 5 - je podrška za push poslužitelja koja dolazi s Jakarta EE 8 Servlet 4.0 API. U ovom ćemo članku istražiti kako koristiti push poslužitelj i integrirati ga s Spring MVC kontrolerima.

2. Ovisnost Mavena

Počnimo s definiranjem ovisnosti koje ćemo koristiti:

 org.springframework spring-webmvc 5.2.8.OSLOBODI javax.servlet javax.servlet-api 4.0.0 

Najnovije verzije spring-mvc i servlet-api mogu se naći na Maven Central.

3. HTTP / 2 zahtjevi

Da bismo koristili push poslužitelj, trebat ćemo pokrenite našu aplikaciju u spremniku koji podržava HTTP / 2 i Servlet 4.0 API. Zahtjevi za konfiguracijom različitih spremnika možete pronaći ovdje, u proljetnom wikiju.

Uz to ćemo trebate podršku za HTTP / 2 na strani klijenta; naravno, većina trenutnih preglednika ima ovu podršku.

4. PushBuilder Značajke

The PushBuilder sučelje je odgovorno za provedbu push servera U proljetni MVC možemo ubrizgati a PushBuilder kao argument metoda označenih sa @RequestMapping.

U ovom je trenutku važno uzeti u obzir da - ako klijent nema HTTP / 2 podršku - referenca će se poslati kao null.

Evo osnovnog API-ja koji nudi PushBuilder sučelje:

  • put (put niza) - označava resurs koji ćemo poslati
  • push () - šalje resurs klijentu
  • addHeader (naziv niza, vrijednost niza) - označava zaglavlje koje ćemo koristiti za gurnuti resurs

5. Brzi primjer

Da bismo demonstrirali integraciju, stvorit ćemo demo.jsp stranica s jednim resursom - logo.png:

     PushBuilder demo PushBuilder demo

Također ćemo izložiti dvije krajnje točke pomoću PushController kontroler - onaj koji koristi potiskivanje poslužitelja i drugi koji ne koristi:

@Controller javna klasa PushController {@GetMapping (path = "/ demoWithPush") javni niz demoWithPush (PushBuilder pushBuilder) {if (null! = PushBuilder) {pushBuilder.path ("resources / logo.png"). Push (); } povratak "demo"; } @GetMapping (path = "/ demoWithoutPush") javni niz demoWithoutPush () {return "demo"; }}

Korištenjem alata za razvoj Chrome možemo vidjeti razlike pozivanjem obje krajnje točke.

Kad nazovemo demoWithoutPush metodom, prikaz i resurs klijent objavljuje i troši pomoću tehnologije povlačenja:

Kad nazovemo demoWithPush metodom možemo vidjeti upotrebu push poslužitelja i kako poslužitelj unaprijed dostavlja resurs, što rezultira manjim vremenom učitavanja:

Tehnologija push poslužitelja može poboljšati vrijeme učitavanja stranica naših aplikacija u mnogim scenarijima. To je rečeno, moramo uzeti u obzir da, iako smanjujemo kašnjenje, možemo povećati propusnost - ovisno o broju resursa koje služimo.

Također je dobra ideja kombinirati ovu tehnologiju s drugim strategijama kao što su predmemoriranje, umanjenje resursa i CDN te pokrenuti testove performansi na našoj aplikaciji kako bi se utvrdile idealne krajnje točke za upotrebu push poslužitelja.

6. Zaključak

U ovom smo brzom uputstvu vidjeli primjer kako se koristi tehnologija push servera s Spring MVC koristeći PushBuilder sučelja i usporedili smo vremena učitavanja kada ga koristimo u odnosu na standardnu ​​tehnologiju povlačenja.

Kao i uvijek, izvorni kod dostupan je na GitHub-u.


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