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结合使用,并且将使用它的加载时间与标准拉技术进行了比较。
领取专属 10元无门槛券
私享最新 技术干货