Spring 5和Servlet4–PushBuilder实战

1.简介

服务器推送技术是HTTP / 2(RFC 7540)的一部分,它使我们能够从服务器端主动向客户端发送资源。与基于HTTP / 1.X拉取的方法相比,这是一个重大变化。

Spring 5带来的新功能之一是Jakarta EE 8 Servlet 4.0 API附带的服务器推送支持。在本文中,我们将探讨如何使用服务器推送并将其与Spring MVC控制器集成

2. Maven依赖

让我们从定义将要使用的依赖关系开始:

在Maven Central上可以找到spring-mvc和servlet-api的最新版本。

3. HTTP / 2要求

要使用服务器推送,我们需要在支持HTTP / 2和Servlet 4.0 API的容器中运行应用程序。可以在Spring Wiki中找到各种容器的配置要求。

此外,我们需要在客户端提供HTTP / 2支持;当然,当前大多数浏览器都支持此功能。

4. PushBuilder功能

该PushBuilder接口负责实现服务器推送。在Spring MVC中,我们可以将PushBuilder注入作为@RequestMapping注释的方法的参数。

在这一点上,重要的是要考虑-如果客户端不支持HTTP / 2,则引用将作为null发送

这是PushBuilder接口提供的核心API :

path(字符串路径)–表示我们要发送的资源

push()–将资源发送到客户端

addHeader(字符串名称,字符串值)–指示我们将用于推送资源的标头

5.快速范例

为了演示集成,我们将使用一个资源(logo.png)创建demo.jsp页面:

我们还将使用PushController控制器公开两个端点-一个使用服务器推送,另一个不使用:

使用Chrome开发工具,我们可以通过调用两个端点来查看差异。

当我们调用demoWithoutPush方法时,视图和资源由客户端使用拉技术发布和使用:

当我们调用demoWithPush方法时,我们可以看到推送服务器的使用以及服务器如何提前交付资源,从而缩短了加载时间:

在许多情况下,服务器推送技术可以缩短应用程序页面的加载时间。话虽如此,我们确实需要考虑,尽管我们减少了等待时间,但是我们可以增加带宽-取决于我们服务的资源数量。

最好将此技术与其他策略(例如,缓存,资源最小化和CDN)结合起来,并对我们的应用程序进行性能测试,以确定使用服务器推送的理想端点。

六.结论

在本快速教程中,我们看到了一个示例,该示例说明了如何使用PushBuilder接口将服务器推送技术与Spring MVC结合使用,并且将使用它的加载时间与标准拉技术进行了比较。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200106A0BHLC00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券