1. Pengenalan
Teknologi Server Push - sebahagian daripada HTTP / 2 (RFC 7540) - membolehkan kami menghantar sumber kepada klien secara proaktif dari sisi pelayan. Ini adalah perubahan besar dari pendekatan berasaskan tarik HTTP / 1.X.
Salah satu ciri baru yang dibawa Spring 5 - adalah sokongan push server yang disertakan dengan API Jakarta EE 8 Servlet 4.0. Dalam artikel ini, kita akan meneroka cara menggunakan push server dan mengintegrasikannya dengan pengawal Spring MVC .
2. Ketergantungan Maven
Mari mulakan dengan menentukan kebergantungan yang akan kita gunakan:
org.springframework spring-webmvc 5.2.8.RELEASE javax.servlet javax.servlet-api 4.0.0 provided
Versi spring-mvc dan servlet-api terbaru boleh didapati di Maven Central.
3. Keperluan HTTP / 2
Untuk menggunakan push server, kita perlu menjalankan aplikasi kita dalam wadah yang mendukung HTTP / 2 dan Servlet 4.0 API . Keperluan konfigurasi pelbagai bekas boleh didapati di sini, di wiki Spring.
Selain itu, kami memerlukan sokongan HTTP / 2 di pihak pelanggan ; sudah tentu, kebanyakan penyemak imbas semasa mempunyai sokongan ini.
4. Ciri-ciri PushBuilder
The PushBuilder muka adalah bertanggungjawab untuk melaksanakan tolak pelayan. Pada Spring MVC, kita dapat menyuntikkan PushBuilder sebagai hujah kaedah yang diberi penjelasan dengan @RequestMapping .
Pada ketika ini, penting untuk mempertimbangkan bahawa - jika pelanggan tidak mempunyai sokongan HTTP / 2 - rujukan akan dihantar sebagai batal .
Inilah API teras yang ditawarkan oleh antara muka PushBuilder :
- path (String path) - menunjukkan sumber yang akan kami hantar
- push () - menghantar sumber kepada pelanggan
- addHeader (String name, String value) - menunjukkan tajuk yang akan kita gunakan untuk sumber yang didorong
5. Contoh Pantas
Untuk menunjukkan integrasi, kami akan membuat halaman demo.jsp dengan satu sumber - logo.png :
PushBuilder demo PushBuilder demo
Kami juga akan mendedahkan dua titik akhir dengan pengawal PushController - satu yang menggunakan push server dan satu lagi yang tidak:
@Controller public class PushController { @GetMapping(path = "/demoWithPush") public String demoWithPush(PushBuilder pushBuilder) { if (null != pushBuilder) { pushBuilder.path("resources/logo.png").push(); } return "demo"; } @GetMapping(path = "/demoWithoutPush") public String demoWithoutPush() { return "demo"; } }
Dengan menggunakan alat Pembangunan Chrome, kita dapat melihat perbezaannya dengan memanggil kedua-dua titik akhir.
Apabila kita memanggil kaedah demoWithoutPush , paparan dan sumber diterbitkan dan digunakan oleh pelanggan menggunakan teknologi tarik:
Apabila kita memanggil kaedah demoWithPush , kita dapat melihat penggunaan push server dan bagaimana sumber dihantar terlebih dahulu oleh pelayan, sehingga waktu pemuatan lebih rendah:
Teknologi tolak pelayan dapat meningkatkan masa muat halaman aplikasi kami dalam banyak senario. Oleh itu, kita perlu mempertimbangkan bahawa, walaupun kita mengurangkan latensi, kita dapat meningkatkan lebar jalur - bergantung pada jumlah sumber yang kita layani.
Sebaiknya menggabungkan teknologi ini dengan strategi lain seperti Caching, Resource Minification, dan CDN, dan menjalankan ujian prestasi pada aplikasi kami untuk menentukan titik akhir yang ideal untuk menggunakan push server.
6. Kesimpulannya
Dalam tutorial ringkas ini, kami melihat contoh bagaimana menggunakan teknologi tolak pelayan dengan Spring MVC menggunakan antara muka PushBuilder , dan kami membandingkan masa muat ketika menggunakannya berbanding dengan teknologi tarik standard.
Seperti biasa, kod sumber tersedia di GitHub.